ASP.NET WebForms应用程序中后台线程的.NET SqlClient登录失败

The*_*dge 8 c# sql-server asp.net iis webforms

  • ASP.NET 4.51,WebForms,VS2013

我正在使用Quartz.NET进行一些后台处理,最终我连接到我的SQL Server.这一切都在我的开发机器上针对IIS Express本地工作,但是当我将它部署到运行IIS的登台服务器时,我遇到了问题.

连接到数据库的代码不是更简单:

myConnection = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=MyDB;User ID=sa;Password=myPass");
Run Code Online (Sandbox Code Playgroud)

但是这引发了一个例外:

System.Data.SqlClient.SqlException:用户'IIS APPPOOL\somehost.somedomain.com'登录失败.

我100%确信连接字符串是正确的,因为在普通页面中使用它可以正常工作.所以扔我的是对IIS APPPOOL的引用.

SqlConnection是否以某种方式不使用它传递的连接字符串?在建立连接时做某种形式的奇怪的用户模仿?

换一种方式.当我知道连接字符串是正确的时候,如何使线程内的SqlConnection()工作?

Val*_*kov 5

尝试应用程序池 - >高级设置

网络服务

在此输入图像描述


Hus*_*lil 4

尝试打开与 SQL Server 的连接似乎失败。

您需要添加 SQL Server 登录名IIS APPPOOL\ASP.NET v4.0并授予数据库权限。

在 SSMS 中的服务器下,展开安全性,然后右键单击登录并选择“新登录...”。

在“新建登录”对话框中,输入应用程序池作为登录名,然后单击“确定”

然后,您可以右键单击应用程序池的登录名,选择“属性”,然后选择“用户映射”。检查适当的数据库和适当的角色。我认为您可以只选择db_datareaderdb_datawriter,但我认为如果您通过 EF 执行此操作,您仍然需要授予执行存储过程的权限。您可以在此处查看角色的详细信息

参考资料:杰夫·绪方 ( jeff-ogata)