2010-07-20 54 views
1

我有一個運行在服務級別帳戶下運行的自定義應用程序池上的asp.net應用程序。我在web.config中關閉了匿名訪問。 Web服務器是域的一部分。應用程序訪問在同一臺計算機上運行的SQL Server。Asp.net應用程序池和sql server數據連接

目前,對於所有用戶,我模擬服務級別帳戶來訪問數據庫。當許多用戶訪問該站點時,這會使lsass進程在使用cpu時開始下降。

我不允許創建一個sql server帳戶,我必須使用我擁有的。 我也不允許將每個單獨的用戶添加到數據庫並給他們特定的訪問權限。

我的問題是,我如何設置我的應用程序和數據庫關係,以便我不必模擬服務級別帳戶,從而避免CPU在網站使用率高時發生抖動。

回答

1

您不應該冒充服務帳戶。服務帳戶是需要訪問數據庫的帳戶,我想它已經有了。在訪問數據庫時,您是否已嘗試運行應用程序而不模擬服務帳戶?這應該工作。

要執行簡單測試,請檢查WindowsIdentity.GetCurrent()返回的身份(例如Page_Load)。這應該返回應用程序池標識,這是用於訪問數據庫的標識。

當然,這隻有在您的Web.config文件中沒有配置client impersonation時纔有效。但由於這不是一般的做法,除了一些角落的情況下,我想你不用這個。客戶端模擬不需要確定當前用戶是誰,只有當您想要使用當前登錄用戶的身份訪問第三方系統(數據庫,文件共享,隊列等)時纔可以使用它(它不是一個可擴展的方法)。

+0

客戶端模擬實際上是在web.config文件中配置的。 impersonate = true,沒有用戶名和密碼。 這樣做是爲了讓我能弄清楚誰是用戶,因爲我需要確保他們被允許首先訪問網站。 – user397065 2010-07-20 21:03:14

+0

您不需要客戶端模擬。我想你有一個內部網站和Windows身份驗證?然後通過調用Thread.CurrentPrincipal或HttpContext.Current.User來檢查當前用戶是誰。我還在我的答案中增加了更多信息。 – 2010-07-21 11:04:30

+0

模擬web.config文件解決了問題。現在我不必以編程方式模擬。 – user397065 2010-07-21 21:16:33

相關問題