Ale*_*x P 6 asp.net-mvc database-connection sql-server-2008
我已经构建了一个ASP.NET MVC 2网站,我使用IIS 7.0托管Rackspace Cloud Server.
当我尝试在服务器上使用IIS 7.0在localhost下测试网站时,我得到一个错误页面.这来自SQL日志(我正在使用SQL Web Edition):
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>]
Run Code Online (Sandbox Code Playgroud)
我的网站在家用电脑上工作正常,因此问题与连接数据库有关.
研究了错误消息代码后,它表明我有一个有效的数据库登录但服务器访问失败了.我在各种论坛(包括stackoverflow/serverfault)上做了一堆阅读,这是我尝试过的,没有一个解决了这个问题:
使用SQL Server身份验证设置新登录.我在SQL中创建了一个新的登录名,并为我的DB提供了正确的访问权限.我在web配置中使用了以下连接字符串:
数据源= myServer;初始目录= myDB;用户ID = myUsername;密码= myPassword;
创建新登录名IIS APPPOOL\DefaultAppPool.我在SQL中创建了具有正确访问权限的新登录并使用了Windows身份验证.连接字符串如下:
服务器= myServer上;数据库= MyDatabase的; Trusted_Connection = TRUE;
使用现有的网络登录NT AUTHORITY\NETWORK SERVICE.我将此用户映射到具有正确访问权限的数据库.连接字符串如下:
服务器= myServer上;数据库= MyDatabase的; Trusted_Connection = TRUE;
当我在线阅读材料时,这些似乎是主要的选择.最后,这里还有一些其他可能有帮助的事情:
UAC没有帮助简而言之,我的网站无法启动,因为它无法从数据库中获取对象,因此会抛出错误.问题是未正确设置对服务器的访问权限.我无法弄清楚我需要的SQL登录/连接字符串/域访问权限的配置.
这让我烦恼了3个星期 - 你能不用5分钟来帮助我吗?
由于您的服务器(Web和SQL)不是域的一部分,因此无法使用Windows身份验证(集成安全性)连接到SQL Server.
在IIS中,当具有Integrated Security=SSPI连接字符串时,用于连接到SQL Server的实际用户是应用程序池标识.
您应该使用您的选项1,这意味着使用SQL Server身份验证设置新登录.
那么,步骤将是:
myUsernameSQL Server用户.Securables部分并确保Public已选中.User mapping部分(在左侧).在列表中查找您的数据库并进行检查.在下面,在Database role membership列表中,确保你检查public,db_datareader和db_datawriter.现在授予您的用户执行存储过程的权限.正如sa,在Management Studio中,执行:
GRANT EXECUTE TO myUserName;
你完成了.
至于安全性,您可以稍后细化myUserName不能使用的权限,例如删除表或其他对象.
在您的应用程序中,您现在应该使用您的点1处的连接字符串.
如果您有任何其他问题,请发布错误消息.
| 归档时间: |
|
| 查看次数: |
9747 次 |
| 最近记录: |