|
操作系統(tǒng)使用的是WIN7,IIS版本為7.5,其他IIS版本未做測試,不一定適用本文所述方法。
之前用ASP.NET做了一個小網(wǎng)站,通過Windows身份驗證來連接SQL Server數(shù)據(jù)庫。 在開發(fā)環(huán)境中使用時也一直沒有問題。 然而,把網(wǎng)站發(fā)布到IIS上進行測試的時候出現(xiàn)了異常,提示無法連接到數(shù)據(jù)庫。
查了資料,找到以下兩種方法: 1、將數(shù)據(jù)庫連接方式改為通過賬號密碼來訪問 這種方式可以解決問題,但不是我所需要的,此處就不做過多的說明了。
2、在IIS管理器中,找到網(wǎng)站使用的應用程序池,在高級配置中,找到[標識] 可以看到默認選中的是ApplicationPoolIdentity 將[標識]改為LocalSystem即可 這種方式也可以解決問題,但是卻使用了更高的用戶權限 以具有高級別用戶權限的帳戶運行應用程序池存在嚴重的安全風險,因此不推薦使用
那么問題就來了,怎么做才更好呢? 解決問題的關鍵點還是在于這個默認選中的標識ApplicationPoolIdentity,這是幾個選項中最安全的 在啟動應用程序池時動態(tài)創(chuàng)建了一個跟“應用程序池標識”同名的帳戶 此時,在訪問數(shù)據(jù)庫時也是通過這個帳戶來訪問的 那么問題就好解決了,在SQL Server中,在相應的數(shù)據(jù)庫中添加這個帳戶對數(shù)據(jù)庫的相關權限就可以了 需要注意的是:再添加的時候,帳戶名要跟異常信息中提示的那個帳戶名一致 例如: 應用程序池名為:ASP.NET v4.0 對應的帳戶名為:ASP.NET v4.0 在SQL中添加為:IIS APPPOOL\ASP.NET v4.0 數(shù)據(jù)庫--安全性--用戶,右鍵新建用戶 用戶名:IIS APPPOOL\ASP.NET v4.0 登錄名:IIS APPPOOL\ASP.NET v4.0 再設置該帳戶的數(shù)據(jù)庫角色成員身份并保存
參考資料: “應用程序池標識”對話框 http://technet.microsoft.com/zh-cn/library/cc731981.aspx |
|
|