我已经构建了一个 ASP.NET MVC 2 网站,我使用 IIS 7.0 在 Rackspace 云服务器上托管该网站。
当我尝试在服务器上使用 IIS 7.0 在 localhost 下测试网站时,我收到一个错误页面。这来自 SQL 日志(我使用的是 SQL Web 版):
Error: 18456, Severity: 14, State: 11
Login failed for user 'IIS APPPOOL\DefaultAppPool'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: <local machine>]
我的网站在我的家用 PC 上运行良好,因此问题与连接数据库有关。
研究了错误消息代码后,它表明我有一个有效的数据库登录,但服务器访问失败。我在各种论坛(包括stackoverflow / serverfault)上对此进行了大量阅读,这是我尝试过的,但都没有解决这个问题:
使用 SQL Server 身份验证设置新登录。我在 SQL 中创建了一个新登录名,并为我的数据库提供了正确的访问权限。我在网络配置中使用了以下连接字符串:
数据源=myServer;初始目录=myDB;用户ID=myUsername;密码=myPassword;
将新登录名创建为
IIS APPPOOL\DefaultAppPool
. 我在 SQL 中创建了具有正确访问权限的新登录名并使用了 Windows 身份验证。连接字符串如下:服务器=myServer;数据库=myDataBase;Trusted_Connection=True;
使用现有网络登录
NT AUTHORITY\NETWORK SERVICE
。我使用正确的访问权限将此用户映射到我的数据库。连接字符串如下:服务器=myServer;数据库=myDataBase;Trusted_Connection=True;
当我在线阅读材料时,这些似乎是主要选项。最后,这里还有一些其他可能有用的东西:
- 将 SQL 设置为以管理员身份运行并没有解决问题
- 关闭
UAC
没有帮助 - 我的应用程序池正在使用ApplicationPoolIdentity(出于安全原因最好)
简而言之,我的网站无法启动,因为它无法从数据库中获取对象,因此会引发错误。问题是对服务器的访问权限设置不正确。我无法确定我需要什么配置的 SQL 登录名/连接字符串/域访问权限。
这让我烦恼了 3 周——你能抽出 5 分钟来帮助我吗?