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
?
您正在使用Trusted_Connection=True
,因此用户ApplicationPoolIdentity或IIS APPPOOL\mysite
提供给SQL服务器.
选项1.IIS APPPOOL\mysite
在SQL Server中授予权限.
选项2.使用User Id=User_Id;Password=******
而不是Trusted_Connection=True
发生这种情况的原因是您要求使用可信连接建立连接,这意味着正在执行代码的操作系统用户将是连接到数据库的用户.
对于IIS,操作系统用户通常在IIS应用程序池中定义,除非您已指定要在web.config中使用的模拟.
默认情况下(为了防止出现安全问题),IIS应用程序池使用的默认标识功能非常有限.根据您的配置(SQL服务器与IIS相关的位置(相同的计算机,不同的计算机),您可能需要为应用程序池指定不同的标识和/或您可能需要授予访问SQL Server到应用程序的权限池身份.
此Microsoft文章提供了有关如何配置ASP.Net模拟的其他信息.
我们始终将我们的Web应用程序配置为模拟域用户,以便我们可以访问远程计算机上的数据库和其他资源,而不必影响IIS应用程序池设置.
归档时间: |
|
查看次数: |
7804 次 |
最近记录: |