Asp.net 调用数据库时web应用丢失凭据

Asp.net 调用数据库时web应用丢失凭据,asp.net,vb.net,iis,iis-7,Asp.net,Vb.net,Iis,Iis 7,我有一个Web服务器和一个单独的数据库服务器。这只是一个内部网页,因此不在外部DMZ上。网站身份验证的IIS设置为禁用匿名、启用ASP.Net、禁用表单和启用windows 如果我在网页上使用以下代码获取当前用户名,它将从客户端计算机正确呈现: lblUserName.Text = System.Web.HttpContext.Current.User.Identity.Name.ToString() 当我在web服务器上本地运行网站时,数据库连接工作正常,但当我出于某种原因从客户端计算机运行

我有一个Web服务器和一个单独的数据库服务器。这只是一个内部网页,因此不在外部DMZ上。网站身份验证的IIS设置为禁用匿名、启用ASP.Net、禁用表单和启用windows

如果我在网页上使用以下代码获取当前用户名,它将从客户端计算机正确呈现:

lblUserName.Text = System.Web.HttpContext.Current.User.Identity.Name.ToString()
当我在web服务器上本地运行网站时,数据库连接工作正常,但当我出于某种原因从客户端计算机运行时,它会丢失当前用户,并尝试使用匿名凭据进行连接,而不是通过当前windows凭据。显示的错误消息是:用户“NT授权\匿名登录”登录失败。(进行DB连接时)

My DB连接字符串在web.config中设置,并具有集成的Security=“SSPI”。在我的web.config中,我还有身份验证模式=“windows”和身份模拟=“true”

不确定这是否会产生影响(我对IIS不在行,通常公司里会有其他人处理这件事,而我现在的处境似乎没有人真正知道他们在用IIS做什么)但在应用程序池的IIS中,我将高级设置过程模型标识设置为“ApplicationPoolIdentity”,并将加载用户配置文件设置为True。根据Tim(谢谢)的建议,我还尝试使用已知的used而不是ApplicationPoolIdentity,并输入了用于运行SSRS报告的凭据,因此我知道它们具有正确的权限,但仍然会出现相同的错误


我是否在IIS或web.config中遗漏了传递当前用户凭据所需的一些非常明显的内容?

您需要将IIS中的应用程序池设置为在具有登录SQL server权限的帐户下运行,或者在配置文件中传递用户名和密码。我建议前者。好的,谢谢。我真的希望使用windows凭据,以便能够捕获哪个用户在数据库级别调用什么,但我将研究其他方法来实现这一点。我已将此应用程序池标识设置为具有访问权限的用户,但我仍然在尝试匿名登录的web应用程序的客户端计算机上收到错误。确切错误:用户NT登录失败授权\匿名登录'。(现在添加到OP)