我有一个 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 登录条目。