如何建立SQL服务器/ IIS 7.0允许ASP.NET MVC的网站来访问数据库?(How to

2019-09-18 11:06发布

我已经建立了一个ASP.NET MVC 2网站,我使用IIS 7.0 Rackspace的云服务器托管。

当我尝试测试网站在本地主机与IIS 7.0服务器上我得到一个错误页面。 这来自于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>]

所以这个问题是值得做的与数据库连接我的网站作品在我的家用电脑上的罚款。

已经研究了错误信息代码它表明,我有一个有效的数据库登录,但服务器访问失败。 我做了解决此阅读各种论坛和这里栈是什么,我都试过了,没有一个已经解决了的问题(包括计算器/ serverfault。):

  1. 使用SQL Server身份验证设置新的登录 。 我创建了SQL新的登录并给了正确的访问权限,我的数据库。 我用下面的Web配置连接字符串:

    数据源= myServer上;初始目录= MYDB;用户ID =名为myUsername;密码= MYPASSWORD;

  2. 创建新的登录为IIS APPPOOL\DefaultAppPool 。 我在SQL中创建新的登录与正确的访问权限和使用Windows身份验证。 连接字符串如下:

    服务器= myServer上;数据库= MyDatabase的; Trusted_Connection = TRUE;

  3. 利用现有的网络登录NT AUTHORITY\NETWORK SERVICE 。 我映射这个用户我用正确的访问权限的数据库。 连接字符串如下:

    服务器= myServer上;数据库= MyDatabase的; Trusted_Connection = TRUE;

这些appeard是主要的选择,因为我通过材料的在线阅读。 最后,这里的一些其他的东西,可能会有所帮助:

  • 设置SQL以管理员身份运行并没有解决问题
  • 关闭UAC并没有帮助
  • 我的应用程序池使用ApplicationPoolIdentity(最佳出于安全原因)

总之,我的网站将无法启动,因为它不能获取对象从DB因此引发错误。 问题是,对服务器的访问权限设置不正确。 我不能工作了,我需要什么样的SQL登录/连接字符串/域的访问权限配置。

这困扰了我3个星期 - 您能抽出5分钟,以帮助我吗?

Answer 1:

由于您的服务器(Web服务器和SQL)不是域的一部分,您不能使用Windows身份验证(集成安全性)来连接到SQL Server。

在IIS中,当具有Integrated Security=SSPI在连接字符串中,使用的实际用户连接到SQL Server是应用程序池标识。

你应该用你的选项1走, 使用SQL Server身份验证含义设置新的登录

因此,步骤是:

  1. 创建myUsername SQL Server用户。
  2. 在用户的属性对话框,转到Securables部分,确保Public被选中。
  3. 接下来,移动到User mapping部(在左侧)。 寻找你的列表中的数据库(一个或多个)进行检查。 楼下,在Database role membership列表中,请务必检查publicdb_datareaderdb_datawriter
  4. 现在给你的用户权限执行存储过程。 作为sa ,在Management Studio中,执行:

    GRANT EXECUTE T​​O名为myUsername;

  5. 你完成了。

至于安全性,您可以稍后再修正的权利myUserName不能够,例如删除表或其他对象。

在您的应用程序,你应该在你点1现在使用的连接字符串。

如果您有任何其他问题,那么请张贴的错误消息。



文章来源: How to set-up SQL Server / IIS 7.0 to allow ASP.NET MVC website to access to database?