我有一个asp.net的networking应用程序,在Windows XP的机器在域中正常工作。 我将它移植到Windows 7独立的机器上。 该应用程序使用一个Web服务,它调用了SQL Server。 Web服务器(IIS 7.5)和SQL Server在同一台独立的计算机上。
我启用了网站和Web服务的Windows身份validation。 Web服务使用可信连接连接string。 Web服务凭据使用System.Net.CredentialCache.DefaultCredentials。 我注意到通话后用户名,密码和域名都是空白的! Web服务和网站使用具有NetworkServices标识的“Classic .NET AppPool”。
我正在Web服务中的数据库调用中收到“NT AUTHORITY \ ANONYMOUS LOGON”exception。 我假设它与空白凭证有关。
我期待ASPNET用户成为数据库的安全令牌。 为什么这不会发生? 我错过了一个设置? (通常这发生在SQL Server和Web服务器在域中的两台不同的机器上,委派和双重跳转,但在我的情况下,一切都在开发盒上)
“ASPNET”用户最后一次在Windows XP上出现,它在Vista或Windows 7上不存在,因为IIS直接托pipeASP.NET,只是使用networking服务作为池身份。
请检查您的模拟设置。 为了简单起见,请确保IIS中的“匿名身份validation”设置绑定到应用程序池标识,并且“站点基本设置”也设置为“连接为…”池标识。
最后,为networking服务添加一个SQL Serverlogin入口(或者池中运行的任何身份)。