![Windows 7 中的“NT AUTHORITY\ANONYMOUS LOGON”错误(ASP.NET 和 Web 服务)](https://linux22.com/image/515872/Windows%207%20%E4%B8%AD%E7%9A%84%E2%80%9CNT%20AUTHORITY%5CANONYMOUS%20LOGON%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%88ASP.NET%20%E5%92%8C%20Web%20%E6%9C%8D%E5%8A%A1%EF%BC%89.png)
我有一个 asp.net web 应用程序,它在域中的 Windows XP 机器上运行良好。我正在将其移植到 Windows 7 独立机器上。该应用程序使用一个调用 SQL Server 的 Web 服务。Web 服务器 (IIS 7.5) 和 SQL Server 位于同一台独立机器上。
我为网站和 Web 服务启用了 Windows 身份验证。Web 服务使用受信任的连接字符串。Web 服务凭据使用 System.Net.CredentialCache.DefaultCredentials。我注意到调用后用户名、密码和域名为空白!Web 服务和网站使用具有 NetworkServices 身份的“Classic .NET AppPool”。
我在 Web 服务中的数据库调用中收到异常“NT AUTHORITY\ANONYMOUS LOGON”。我假设它与空白凭据有关。
我期望 ASPNET 用户成为数据库的安全令牌。为什么没有发生这种情况?我错过了设置吗?(通常当 SQL 服务器和 Web 服务器位于域中的两台不同机器上时会发生这种情况,委派和双重跳跃,但在我的例子中,一切都在开发箱上)
答案1
“ASPNET”用户最后出现在 Windows XP 上,它在 Vista 或 Windows 7 上不存在,因为 IIS 直接托管 ASP.NET 并且仅使用网络服务作为池标识。
还要检查您的模拟设置。为简单起见,请确保 IIS 中的“匿名身份验证”设置已绑定到应用程序池标识,并且站点基本设置也设置为“以...身份连接”池标识。
最后,为网络服务(或池运行所采用的任何身份)添加一个 SQL Server 登录条目。