ASP.NET和SQL Server 2008中的错误"用户登录失败'NT AUTHORITY\IUSR'"

Jus*_* R. 16 sql-server asp.net iis-7 database-permissions

我的ASP.NET v3.5 Web应用程序在尝试打开与SQL Server 2008数据库的连接时抛出以下异常:

System.Data.SqlClient.SqlException:无法打开登录请求的数据库"MyDbName".登录失败.用户'NT AUTHORITY\IUSR'登录失败.

问题是,我已经添加NT AUTHORITY\IUSR到服务器的登录列表和数据库的用户列表中.对于服务器,我已授予用户Public角色,并且我已授予数据库db_datareader权限.

我也授予了相同的权限NT AUTHORITY\NETWORK SERVICE,这是运行应用程序池的标识.

如果有所不同,Web应用程序由IIS7托管.DB和IIS同时位于同一物理计算机上时出现问题.

Dav*_*kle 7

这里的诀窍是NT AUTHORITY\NETWORK SERVICE实际上在数据库中显示为DOMAINNAME\MACHINENAME$(注意$符号!).也就是说,当您从Web服务器跨越机器边界到SQL Server时,如果您使用NETWORK SERVICELOCAL SYSTEM帐户,SQL Server将看到计算机帐户.如果您使用任何其他非域帐户,SQL Server将不会收到您的凭据.

我对您的错误消息感到有点困惑.说实话,我不认为当数据库在另一个盒子上时,你会看到除了之外的任何东西Login Failed for NT AUTHORITY\ANONYMOUS LOGON.

IUSR用于匿名网站,不能通过线路传递给SQL Server.如果你在同一台机器上做所有事情,你可能会找到一种工作方式,但我永远不会知道,因为我从来没有这样做...... ;-)


Smy*_*ian 5

如果它对某人有帮助,我在web.config 中添加<identity impersonate="false" />了此错误以消除(在 下<system.web>