Asp.net

ASP.NET 和 SQL Server 2008 中的錯誤“使用者 ‘NT AUTHORITYIUSR’ 登錄失敗”

  • August 13, 2009

我的 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 託管,如果這有所不同的話。當數據庫和 IIS 也在同一台物理機器上時,該問題也會重現。

這裡的訣竅是NT AUTHORITY\NETWORK SERVICE實際上在數據庫中顯示為DOMAINNAME\MACHINENAME$(注意$符號!)。也就是說,當您從 Web 伺服器跨越機器邊界到 SQL Server 時,如果您使用NETWORK SERVICEor帳戶,SQL Server 會看到機器帳戶LOCAL SYSTEM。如果您使用任何其他非域帳戶,SQL Server 將不會收到您的憑據。

我對你的錯誤資訊有點困惑。說實話,我不認為當數據庫在另一個盒子上時,你會看到除Login Failed for NT AUTHORITY\ANONYMOUS LOGON.

IUSR用於匿名網站,不能通過網路傳遞到 SQL Server。如果您在同一台機器上做所有事情,您可能會找到一種工作方式,但我永遠不會知道,因為我永遠不會那樣做…… ;-)

引用自:https://stackoverflow.com/questions/1269706