“IIS AppPool \ ASP.NET v4.0” – SQL Server Weblogin失败

我试图将网站从SQL Server 2008 Express迁移到SQL Server Web,并且该网站在访问数据库时遇到问题。 事实上,Express只是从Visual Studio的内置web服务器运行网站才使用的,所以我不确定configuration如何在全面的IIS 7下运行。无论如何,当我尝试访问一个页面使用Linq到实体(要求网站连接到数据库),我得到错误“IIS AppPool \ ASP.NET v4.0的login失败”。 所以,我打开SQL Server Management Studio,并试图为用户添加一个login名,但是我只是收到一条消息,指出“Windows NT或用户组”***** \ Asp.Net v4.0“找不到” 。 甚至在我要求Management Studio检查用户的名字后,也会发生这种情况。 有人能告诉我我做错了什么吗? 此外,我也打开替代build议以及…一切运行在同一台服务器上,所以没有远程连接。 出于这个原因,我很乐意使用Windows身份validation,如果可能的话。

IIS 7正在尝试使用IIS应用程序池标识来访问您的SQL数据库。

因此,您必须首先将IIS 7的应用程序池权限授予SQL Server。

为此,请进入SQL Server Management Studio – >服务器实例 – >安全 – >login – >新buildlogin

login名将是“IIS APPPOOL \ ASP.NET v4.0”。 这是因为每次在IIS7中创build应用程序池时,都会创build一个使用与您的应用程序池相同名称的标识。 你的情况,你正在使用asp.net 4自带的默认应用程序池。

然后在您的数据库上,转到安全 – >login – >新login,给它一个别名,然后select您在上一步(IIS APPPOOL \ ASP.NET v4.0)中添加的用户对象,然后给它db_owner(或无论您的需求是什么)架构/angular色特权。

编辑 :请不要这样做 – 我没有想到当我最初写这个答案。

欲了解更多详情,为什么我的原始答案不是一个好主意,请查看下面评论中的链接。


另一个解决scheme是进入IIS并编辑应用程序池本身以使用标识“LocalSystem”。 这可以通过右键单击应用程序池 – >高级设置 – >单击标识的“…”button(在“过程模型”右下方) – >在内置帐户下拉列表中select“LocalSystem”。

这样做,你不需要在你的数据库中build立一个新的用户。