2010-12-18 60 views
1

我正面臨一個奇怪的問題:我有一個簡單的WCF服務,它從數據庫中檢索一些數據。當我在本地serviceHost承載服務一切工作正常,但是當我在本地IIS(7.5 - Windows 7)上承載相同的服務時,我得到此異常:The Undelying provider failed on open當訪問數據庫時,IIS 7.5失敗

我在服務中有一些日誌記錄服務,我發現只有在服務調用某些數據庫服務(而不是一個特定的數據庫服務)時,此異常纔會發生 。奇怪的是,當服務沒有託管在IIS上時,相同的數據庫調用工作正常。

我做過的事情:在IIS服務器上啓用ASP.NET模擬 - >沒有幫助。

另一件事:我正在使用sql server 2008 express。

其他想法?

+1

你可以發佈內部異常或詳細的excelption消息。也許你需要允許IIS訪問你的數據庫 – 2010-12-18 20:48:24

回答

2

你使用了什麼安全機制?很可能您正在使用某種Kerberos/Windows身份驗證,並且IIS無法將這些憑據傳遞給SQL Server。這個問題有時被稱爲雙跳問題,通常由代理(而不是ASP.NET委託)來解決。

鏈接:Delegation and Impersonation

+0

我使用Windows身份驗證。 – Liran 2010-12-18 20:38:21

+0

實際啓用IIS中的ASP.Net模擬確實解決了問題。感謝指示(安全)的WCF跟蹤日誌報告套接字超時,我試過的所有調整沒有幫助。再次感謝。 – Liran 2010-12-20 15:08:41

1

假設你正在運行在.NET 4.0中的服務已經在IIS和應用程序池爲這一申請看看。

如果運行應用程序池的帳戶是ApplicationPoolIdentity,請在您的數據庫中查看登錄「IIS AppPool \ DefaultAppPool」有權訪問您的數據庫。

1

其中一個最簡單的事情,才能指出了正確的方向是檢查你的Windows事件日誌,尤其是安全日誌。它可能會告訴你發生了什麼事。

在IIS機器和數據庫機器上檢查這些。

1

聽起來像最可能的原因是安全。

在IIS 7.5中,您有各種安全層。每個AppPool都有自己的安全證書,您可能需要檢查。

另外IIS自己的服務有Windows安全證書。如果設置爲本地帳戶,您可能需要嘗試將其設置爲網絡帳戶。

但是,您發佈的錯誤消息是通用的WCF錯誤。我會同意吉姆關於在事件日誌中查看更多細節。如果你發現它在這裏發佈。

相關問題