2011-08-13 401 views
2

這個問題讓我瘋狂。我有一個WCF服務,它使用COM .dll(位於SysWOW64中)來執行一些操作。我在Windows 2008 R2中註冊了它,但是在服務器上部署服務時它並不工作。我的服務是爲「任何CPU」編譯的。用IIS7.5註冊COM .dll(REGDB_E_CLASSNOTREG)

當我創建一個控制檯應用程序它工作正常。我究竟做錯了什麼?這是一個許可問題嗎?我將應用程序池用戶更改爲管理員,但也沒有任何工作。當我嘗試將池更改爲32位應用程序時,池崩潰或服務超時。

的錯誤信息是:

System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {47E736CA-3EEA-11D5-8400-00A0C9CA15AD} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

任何人都可以點我在正確的方向?

回答

4

這是因爲你的COM DLL是32位的。 SysWOW64適用於64位Windows上的32位組件。您的控制檯應用程序可以工作,因爲它正在構建爲x86(檢查項目屬性),但IIS應用程序池是64位。

您需要在IIS中創建一個新的應用程序池,轉至Advanced Properties並將Enable 32-Bit Applications設置爲True。這將爲您創建一個32位應用程序池,並找到您的COM DLL。

+0

我之前嘗試過,但沒有工作,因爲應用程序池不斷崩潰。新的應用程序池運行良好。謝謝! – cosss