我有一个网站(Alpha)在运行于 Windows Server 2008 R2 的 IIS 7.5 网络服务器上成功运行。
我基本上想克隆 Alpha 并拥有第二个网站 Beta,与 Alpha 相同,但代码会有所不同。我创建了第二个网站,还创建了第二个应用程序池。据我所知,这两个应用程序池的配置相同:自动启动、v4.0、集成、身份:ApplicationPoolIdentity。
如果我将其连接到第二个网站(测试版)自己的应用程序池,它就无法工作,但如果将其连接到 Alpha 的应用程序池,它就可以正常工作。据我所知,我没有对 Alpha 的应用程序池做任何特殊处理。据我所知,两者的高级设置相同。
Beta 在连接到其自己的应用程序池时出现故障,并出现未处理的异常:异常详细信息:System.Data.SqlClient.SqlException:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败
如果您能就如何比较两个应用程序池或者调试整个系统提出任何想法,我们将不胜感激。
我尝试删除 Beta 的应用程序池并重新创建它。
答案1
您正在连接到具有集成安全性的 SQL-Server,对吗?看来第二个池身份无权访问您的 SQL-Server/数据库。
使用 ApplicationPoolIdentity,您的应用程序将以类似的方式连接到 SQL-Server:
IIS AppPool\AppPoolName
确保两个应用程序池标识都可以访问您的服务器和相关的数据库。
我可以创建一个 Windows 组来放置各种应用程序池标识,然后授予该 Windows 组访问数据库的权限。
另请查看问题,它似乎解决了类似的问题并建议重新启动服务器。
答案2
您更改了池 Alpha 所运行的帐户,但忘记更改池 Beta。
因此池 Beta 仍在默认 Networkservice(机器帐户)下运行,该帐户没有访问您数据库的权限。
编辑:
另一个可能的原因是,您缺少 MS HotFix KB2545850,这似乎会随机导致此问题。请参阅http://support.microsoft.com/kb/2545850
有关详细信息,请参阅此 KB,其中还向您展示了如何重现并确认这是原因。 http://support.microsoft.com/kb/2672809