在IIS上,应用程序无法打开SQL连接

Mav*_*ven 3 c# iis asp.net-mvc-4 sql-server-2012

我有一个如下所示的连接字符串:

Server=.;Database=mydbname;Trusted_Connection=True;
Run Code Online (Sandbox Code Playgroud)

当我使用Visual Studio(IIS Express)运行/调试我的应用程序时,这可以正常工作但在部署之后IIS-8,在打开连接时会抛出异常:

用户'IIS APPPOOL\mysite'登录失败.

我很困惑为什么会发生这种情况为什么当数据库不需要时,IIS正在中间添加用户以及为什么不发生这种情况IIS Express

max*_*oin 7

您正在使用Trusted_Connection=True,因此用户ApplicationPoolIdentity或IIS APPPOOL\mysite提供给SQL服务器.

选项1.IIS APPPOOL\mysite在SQL Server中授予权限.

选项2.使用User Id=User_Id;Password=******而不是Trusted_Connection=True


com*_*ech 5

发生这种情况的原因是您要求使用可信连接建立连接,这意味着正在执行代码的操作系统用户将是连接到数据库的用户.

对于IIS,操作系统用户通常在IIS应用程序池中定义,除非您已指定要在web.config中使用的模拟.

默认情况下(为了防止出现安全问题),IIS应用程序池使用的默认标识功能非常有限.根据您的配置(SQL服务器与IIS相关的位置(相同的计算机,不同的计算机),您可能需要为应用程序池指定不同的标识和/或您可能需要授予访问SQL Server到应用程序的权限池身份.

Microsoft文章提供了有关如何配置ASP.Net模拟的其他信息.

我们始终将我们的Web应用程序配置为模拟域用户,以便我们可以访问远程计算机上的数据库和其他资源,而不必影响IIS应用程序池设置.