2011-06-07 70 views
0

我有一個奇怪的問題,讓IIS7連接到Sql2008。IIS 7沒有連接到Sql2008

首先,使用VS2010中的默認Web服務器,在HTTPModule我從web.config加載連接字符串,並訪問數據庫。效果很好。 (連接字符串使用集成安全= SSPI)

但是因爲網站有一些#includes,我需要在IIS中調試它,所以我從默認的web服務器切換到IIS。其他一切都是一樣的。但是,當我嘗試在HTTPModule中打開相同的SqlConnection時,我發現提供的憑據不是用戶,而是機器名稱。

環境是Virtul機器; Windows 7 64位; IIS7; VS2010; SQL2008

任何人都可以給我任何想法在哪裏或如何設置? Thx

回答

0

當您在Visual Studio中運行應用程序時,應用程序以「您」的身份運行。如果您的證書足以連接到數據庫,那麼使用集成安全性,您將能夠登錄。

當您移到IIS時,IIS根據您的配置以不同身份運行進程(但很可能不是「你」)。您有幾種選擇:

1)給IIS下的權限運行訪問數據庫(不推薦)

2)配置IIS運行應用程序作爲默認用戶「你」,或者作爲一個專門的用戶專門配置爲運行您的過程。

http://technet.microsoft.com/en-us/library/cc771170(WS.10).aspx

3)不要使用集成的安全性,使用SQL安全性。

這是一篇文章,介紹如何找出用戶IIS正在運行。

http://blogs.iis.net/davcox/archive/2009/08/12/what-is-my-iis-code-running-as.aspx

+0

感謝您的輸入,但沒有選擇不使用集成安全性。請參閱下面的答案。 – edepperson 2011-06-07 20:00:46

+0

澄清 - 我的答案中的選項1)和2)也適用於集成安全性。 1)不推薦(但它會工作)。 2)可能是你最終需要做的。 – 2011-06-07 21:49:36

+0

無法提前發佈我的答案。見下文,它提供了詳細信息,但從一般意義上來說,答案是正確的 – edepperson 2011-06-07 23:46:09

0

對於運行到我做了同樣的問題的人。

首先,我嘗試運行存儲過程的地方是在HTTPModule中。另外我正在使用我的本地IIS副本進行調試。請注意,在VS2010附帶的默認網絡服務器中,它運行良好,但在IIS中打破了。

您顯然無法訪問HTTPModule的BeginRequest方法中的遠程Sql2008。它必須位於PostRequestHandlerExecute方法中。

其次,我將IIS身份驗證設置爲包括 AnonymousAuthentication與用戶IUSR。
另外我只爲網站添加了ASP.NET模擬,並且該用戶對數據庫擁有權限