癥狀
在創建從 asp.net 到 sql server 的受信任連接時,可能會出現以下錯誤信息:
login failed for user 'machinename/aspnet
for computers that run internet information services (iis) 6.0, you may receive the following error message:
login failed for user 'machinename/networkservice
注意:特別是在使用集成安全性(在連接字符串中包括 integrated security=sspi 屬性)時,會出現上述錯誤信息中的某一個。
原因
當您使用 asp.net 時,對于 aspnet_wp.exe (或者對于 在 iis 6.0 上運行的應用程序而言,為 w3wp.exe)和發往 sql server 的請求,默認的安全上下文都是 aspnet_wp 帳戶(或者對于在 iis 6.0 上運行的應用程序而言,為 networkservice 帳戶)。默認情況下,aspnet_wp 帳戶(或者對于在 iis 6.0 上運行的應用程序而言,為 networkservice 帳戶)在 sql server 中沒有任何權限,因此它不能訪問數據庫。
解決方案
要解決此問題,請使用下列方法之一。
• 以編程方式將 asp.net 輔助進程的安全上下文更改為具有正確的 sql server 權限的用戶。
- 或者 -
• 更改 asp.net 的默認配置,以便 asp.net 輔助進程在滿足以下條件的用戶的上下文中啟動和運行:該用戶在 sql server 中具有正確的權限。
- 或者 -
• 授予 sql server 上的正確權限,以便 aspnet_wp 帳戶(或者對于在 iis 6.0 上運行的應用程序而言,為 networkservice 帳戶)具有訪問所需資源的適當權限。
狀態
出現這種現象的原因是緣于設計如此。
再現此問題的步驟
1. 在任何同時運行 asp.net 和 sql server 的計算機上,創建一個新的 microsoft visual basic .net web 應用程序。
2. 將以下代碼添加到隨該項目一起創建的 webform1.aspx 頁的 page_onload 事件中:dim con as new system.data.sqlclient.sqlconnection("data source=localhost;integrated security=sspi;database=northwind")
con.open()
con.close()
3. 生成該項目,然后在瀏覽器中打開 webform1.aspx 頁。您將看到本文“癥狀”部分描述的錯誤信息。
新聞熱點
疑難解答
圖片精選