我有一个旧版应用程序,我正在对其进行一些维护。它是用 Visual Studio 2008、ASP.NET Web Forms、SQL Server 和 .NET 3.5 构建的。该应用程序使用由ActiveDirectoryMembershipProvider.
这些计算机位于两个域中。
域是:
- 开发 PC:companydomain
- 测试服务器:dev.companydomain
- 开发 SQL Server:公司域
该应用程序在我的开发 PC 上运行良好并连接到 Dev SQL Server。一切都在同一个域中。
部署到测试服务器进行测试时,应用程序连接数据库时抛出异常。浏览器在 Dev PC 上运行。该应用程序使用我的凭据 (companydomain\myusername) 登录。测试服务器还连接到开发 SQL 服务器。
错误是:
Error: SqlException (18456): Procedure: Line: 65536 State: 1 Message: Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
我运行了 SQL Server Profiler 跟踪并获得以下信息:
Audit Login Failed Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. .Net SqlClient Data Provider ANONYMOUS LOGON NT AUTHORITY\ANONYMOUS LOGON 3208 90 2014-02-24 15:40:43.313
网页配置
<authentication mode="Forms">
<forms name=".ASPXFORMSAUTH" loginUrl="Default.aspx" />
</authentication>
<identity impersonate="true">
</identity>
<Connection name="Connection Name" connectionString="Data Source=DatabaseServer;Initial Catalog=DatabaseName;Integrated Security=SSPI;"/>
IIS 身份验证设置
测试服务器上的设置。

我添加了一些转储当前用户的日志记录代码。Thread.CurrentPrincipal.Identity返回已登录到应用程序的 Windows 用户。WindowsIdentity.GetCurrent()返回NT AUTHORITY\IUSR。
是什么导致异常?为什么身份“匿名登录”通过数据库连接而不是经过身份验证的用户?