ApplicationPoolIdentity IIS 7.5到SQL Server 2008 R2无法正常工作

我有一个小的ASP.NETtesting脚本,用于打开域中另一台计算机上的SQL Server数据库的连接。 这不是在所有情况下工作。

build立:

W2K8R2下的IIS 7.5尝试连接到远程SQL Server 2008 R2实例。 所有的机器都在同一个域中。

对于Web站点使用ApplicationPoolIdentity,无法使用以下方式连接到SQL Server:

用户'NT AUTHORITY \ ANONYMOUS LOGON'login失败。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的来源。

exception详细信息:System.Data.SqlClient.SqlException:用户'NT AUTHORITY \ ANONYMOUS LOGON'login失败。

但是,如果我将过程模型标识切换到NETWORK SERVICE或我的域帐户,则数据库连接成功。

我已经在SQL Server中授予\ $访问权限。

我没有在网站上进行任何authentication,只是一个简单的脚本来打开一个连接到数据库,以确保它的工作。

我启用了匿名身份validation并将其设置为使用应用程序池标识。

我该如何做这项工作? 为什么ApplicationPoolIdentity尝试使用ANONYMOUS LOGON? 更好的是,如何使其停止使用匿名login?

我也有同样的问题。 根据此页面 ,ApplicationPoolIdentity应该以机器帐户(DOMAIN \ COMPUTERNAME $)的forms访问networking资源,但它使用NT AUTHORITY \ ANONYMOUS LOGON来访问SQL Server。

我能够使用此修补程序来获取ApplicationPoolIdentity正如文档所说的那样工作。 此修补程序没有专门介绍一种以NT AUTHORITY \ ANONYMOUS LOGON访问networking资源的解决scheme,但它与计算机密码更改有关。

这个stackoverflow线程帮我find了这个解决scheme:

其他有用的提示,用于debuggingASP.NET身份和SQL身份

由于SQL集成身份validation与线程身份有关,因此能够查看您的用户身份,线程身份(根据模拟而变化)和SQL服务器login很有用。 这个ASPX片段显示了所有三个:

<%@ Import Namespace="System.Security.Principal" %> <div>ASP.NET Request User identity: <%= User.Identity.Name %></div> <div>Current thread/process WindowsIdentity: <%= WindowsIdentity.GetCurrent(false).Name %></div> <asp:SqlDataSource ID="CurrentUserData" runat="server" ConnectionString="<%$ ConnectionStrings:ConnID %>" SelectCommand="select SYSTEM_USER" /> <asp:DetailsView DataSourceID="CurrentUserData" runat="server" /> 

我有完全相同的问题。 我把头发拉出几个小时,最后重新启动机器。 这个问题消失了! 请注意,通过iisreset DID重新启动IIS不能解决问题。 它只在我重新启动服务器时消失。