1. 程式人生 > >網站通過Windows身份驗證連線SQL Server,釋出到IIS後無法連線的問題

網站通過Windows身份驗證連線SQL Server,釋出到IIS後無法連線的問題

作業系統使用的是WIN7,IIS版本為7.5,其他IIS版本未做測試,不一定適用本文所述方法。

之前用ASP.NET做了一個小網站,通過Windows身份驗證來連線SQL Server資料庫。

在開發環境中使用時也一直沒有問題。

然而,把網站釋出到IIS上進行測試的時候出現了異常,提示無法連線到資料庫。

查了資料,找到以下兩種方法:

1、將資料庫連線方式改為通過帳號密碼來訪問

      這種方式可以解決問題,但不是我所需要的,此處就不做過多的說明了。

2、在IIS管理器中,找到網站使用的應用程式池,在高階配置中,找到[標識]

      可以看到預設選中的是ApplicationPoolIdentity

      將[標識]改為LocalSystem即可

      這種方式也可以解決問題,但是卻使用了更高的使用者許可權

      以具有高級別使用者許可權的帳戶執行應用程式池存在嚴重的安全風險,因此不推薦使用

那麼問題就來了,怎麼做才更好呢?

解決問題的關鍵點還是在於這個預設選中的標識ApplicationPoolIdentity,這是幾個選項中最安全的

在啟動應用程式池時動態建立了一個跟“應用程式池標識”同名的帳戶

此時,在訪問資料庫時也是通過這個帳戶來訪問的

那麼問題就好解決了,在SQL Server中,在相應的資料庫中新增這個帳戶對資料庫的相關許可權就可以了

需要注意的是:再新增的時候,帳戶名要跟異常資訊中提示的那個帳戶名一致

例如:

應用程式池名為:ASP.NET v4.0

對應的帳戶名為:ASP.NET v4.0

在SQL中新增為:IIS APPPOOL\ASP.NET v4.0

資料庫--安全性--使用者,右鍵新建使用者

使用者名稱:IIS APPPOOL\ASP.NET v4.0

登入名:IIS APPPOOL\ASP.NET v4.0

再設定該帳戶的資料庫角色成員身份並儲存

參考資料:

“應用程式池標識”對話方塊

http://technet.microsoft.com/zh-cn/library/cc731981.aspx