【发布时间】:2012-06-25 21:54:44
【问题描述】:
我已经构建了一个 ASP.NET MVC 2 网站,我使用 IIS 7.0 使用 Rackspace 云服务器托管该网站。
当我尝试在服务器上使用 IIS 7.0 在 localhost 下测试网站时,我收到一个错误页面。这来自 SQL 日志(我使用的是 SQL 网络版):
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 中创建了一个新登录名,并为我的数据库提供了正确的访问权限。我在网络配置中使用了以下连接字符串:
Data Source=myServer;Initial Catalog=myDB;User Id=myUsername;Password=myPassword;
-
以
IIS APPPOOL\DefaultAppPool身份创建新登录。我在 SQL 中创建了具有正确访问权限的新登录名并使用了 Windows 身份验证。连接字符串如下:Server=myServer;Database=myDataBase;Trusted_Connection=True;
-
使用现有网络登录
NT AUTHORITY\NETWORK SERVICE。我使用正确的访问权限将此用户映射到我的数据库。连接字符串如下:Server=myServer;Database=myDataBase;Trusted_Connection=True;
这些似乎是我在网上阅读材料时的主要选择。最后,这里还有一些其他可能有用的东西:
- 将 SQL 设置为以管理员身份运行未能解决问题
- 关闭
UAC没有帮助 - 我的应用程序池正在使用 ApplicationPoolIdentity(出于安全原因最好)
简而言之,我的网站无法启动,因为它无法从数据库中获取对象,因此会引发错误。问题是对服务器的访问权限设置不正确。我无法确定我需要什么配置的 SQL 登录名/连接字符串/域访问权限。
这让我烦恼了 3 周 - 你能抽出 5 分钟来帮助我吗?
【问题讨论】:
-
你能发布你当前的连接字符串吗?我假设您正在使用集成安全性进行连接,因此 AppPoolIdentity 用于连接到 SQL Server。另外,请说明您的 Web 和 sql 服务器是否在 Active Directory 设置中运行。
-
使用:
Source=SetsOfSix; Initial Catalog=SetsOfSix; Integrated Security=SSPI;。让我去检查有关活动目录设置的问题... -
在 IIS 上未安装
Active Directory Domain Services。如何检查 web 和 sql 服务器是否在 Active Directoty 设置中运行? -
最简单的方法是转到计算机属性并在“计算机名称、域和工作组设置”下查看是否列出了
Domain或Workgroup名称。我之所以问,是因为根据这一点,可以应用两种不同的选项(使用域用户连接到 SQL,或者使用 SQL 身份验证)。 -
我有:
Computer Name = SETSOFSIX; Full Computer Name = SETSOFSIX; Workgroup = Workgroup;
标签: asp.net-mvc sql-server-2008 database-connection