2013-02-02 113 views
1

當我從Visual Studio運行我的網站時,它一切正常。現在我正試圖向前邁進並開始測試多租戶部分,因此我必須將我的網站移至IIS。當在IIS中託管網站時無法打開數據庫

出於某種原因,我無法訪問數據庫。當我打開需要數據庫訪問的頁面我得到的錯誤是:通過登錄

無法打開數據庫「GWD」要求。登錄失敗。 用戶'IIS APPPOOL \ gwd'登錄失敗。

異常詳細信息:System.Data.SqlClient.SqlException:無法打開數據庫 「GWD」 由登錄請求。登錄失敗。用戶'IIS APPPOOL \ gwd'登錄失敗 。

另一個forum介紹如何添加NT AUTHORITY\NETWORK SERVICE。但是這並不能解決問題。我確實創建了NT AUTHORITY\NETWORK SERVICE併爲所有現有數據庫(包括主數據庫)添加了dbowner,但沒有結果。

我不知道,任何人都可以幫忙嗎?

+1

最快的方法似乎是爲您的APPPOOL \ gwd登錄添加安全性。試試這個解決方案:http://stackoverflow.com/questions/1933134/add-iis-7-apppool-identities-as-sql-server-logons –

回答

6

您還需要將應用程序池標識更改爲NETWORK SERVICE。啓動Internet信息服務(IIS)管理器,深入查看應用程序池,然後選擇您正在使用的應用程序池。 (不知道?鑽取到左側下的網站虛擬目錄,然後單擊右側的基本設置。)然後單擊應用程序池,單擊高級設置,然後在流程模型改變身份,以網絡服務。

在SQL Server Management Studio中,你需要在安全性添加NT AUTHORITY\NETWORK SERVICE用戶的數據庫,但它聽起來像是你已經做到了。

+0

有時我想知道我會在哪裏進行,當我必須弄清楚這一切沒有這樣的幫助下:)。再次,它是解決方案的一個亮點。許多人認爲尼古拉斯! – bas

1

@Nicholas Piasecki提供了一個潛在的解決方案,另一個將離開應用程序池,而是授予它當前正在運行的AppPoolIdentity,而不是訪問數據庫。

首先,你需要一個新的Windows登錄名添加到SQL Server的用戶:「IIS APPPOOL \ GWD」。

一旦你這樣做,你就可以將該用戶添加到數據庫中使用適當的權限,就像您的網絡服務。

+0

我更喜歡Nicolas的解決方案,但提供工作替代方案+1! – bas

2

您看到錯誤「無法打開數據庫」GWD「請求登錄。登錄失敗。登錄失敗的用戶'IIS APPPOOL \ gwd .....」因爲您將應用程序複製到IIS服務器和成員資格提供程序已添加到web.config文件中,但沒有applicationName屬性。

我建議你添加一個「的applicationName」屬性,你的供應商的聲明。例如:

<membership> 
<providers> 
<add name .... 
. 
. 
. 
. 
applicationName="/yourWebApp" /> 

</providers> 
</membership> 

只要看看在aspnet_Application表,找出發展過程中創造的用戶/數據時使用的應用程序名稱。

我希望它有幫助。