首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序在IIS上无法打开SQL连接

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

Stack Overflow用户
提问于 2013-12-21 21:15:09
回答 3查看 9K关注 0票数 4

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

代码语言:javascript
复制
Server=.;Database=mydbname;Trusted_Connection=True;

当我使用Visual (IIS Express)运行/调试我的应用程序时,这很好,但是在通过IIS-8进行部署之后,它会在打开连接时抛出一个异常:

用户“IIS APPPOOL\mysite”登录失败。

我不明白为什么会发生这种情况,为什么IIS在数据库不需要用户的情况下在中间添加它的用户,以及为什么IIS Express没有这样做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-21 21:23:52

您使用的是Trusted_Connection=True,因此用户ApplicationPoolIdentity或IIS APPPOOL\mysite被提供给server。

选项1.在SQL server中向IIS APPPOOL\mysite授予权限。

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

票数 8
EN

Stack Overflow用户

发布于 2013-12-21 21:25:31

之所以会发生这种情况,是因为您要求使用可信连接来建立连接,这意味着正在执行代码的操作系统用户将与数据库连接。

对于IIS,除非您指定了要在web.config中使用的模拟,否则操作系统用户通常是在impersonation中定义的。

默认情况下(为了防止安全问题),用于IIS应用程序池的默认标识的功能非常有限。根据您的配置(其中SQL server相对于IIS (同一台机器,不同的计算机),您可能需要为应用程序池指定不同的标识和/或您可能需要授予访问SQL Server到应用程序池标识的权限。

Microsoft article具有有关如何配置ASP.Net模拟的其他信息。

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

票数 5
EN

Stack Overflow用户

发布于 2013-12-21 21:24:07

Trusted_Connection=true在连接字符串中使用Identity用户配置文件覆盖SQL身份验证值。

设置Trusted_Connection=false

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20723623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档