2012-03-22 51 views
1

也許是人們可以看到的最差類型的錯誤消息。並不意味着什麼,可能與一切......調用COM方法時IIS Web服務發生災難性故障

我嘗試在IIS 7.5中創建一個Web服務(WS)(我最初嘗試WCF服務,但同樣的故事) 的WS使用COM DLL這是成功註冊和COM安全權限給出。

當我使用Visual Studio Development Server運行WS時,一切都很好,我按照要求得到結果。但是當我嘗試將WS部署到IIS時,我以

System.Runtime.InteropServices.COMException: Catastrophic failure 

我的電腦有Windows Server 2008 R2 Standard x64。 我要強調的是:我開發(使用Visual Studio 2010旗艦版),測試(使用Visual Studio開發服務器)和部署同一臺計算機上(使用IIS 7.5)

我在想這個問題可能與32-64位不兼容,因爲我的COM支持32位。因此,我更改了應用程序池設置以啓用32位應用程序,在Visual Studio中將平臺目標更改爲x86,重新部署了WS,這些都無濟於事。

我的問題是:

如何才能成功WS VS開發服務器上運行,但未能在IIS上?我還應該在IIS設置中更改什麼?

+0

嘗試安裝Microsoft Visual C++ 2010 Redistributable(64/32) – Rumplin 2012-03-22 08:00:40

+0

錯誤代碼的名稱更好,E_UNEXPECTED。這是準確的,你沒有想到它:) – 2012-03-22 08:47:42

+0

你有沒有找到任何有關錯誤的解決方案?我得到了同樣的錯誤,但找不到任何解決方案。 – ftuna 2012-07-26 07:08:00

回答

1

它真的有助於諮詢COM DLL的生產者。他們已經給出了一個明確的DLL安裝程序,我不知何故被省略。

故事的道德:儘管您的Web服務或網站在Visual Studio Development Server下成功運行,但這並不一定意味着您已經正確配置了COM DLL的所有設置。

你可以開始檢查以下問題:

  • 註冊使用的COM DLL
  • 檢查配置設置DCOMCNFG
  • 如果DLL不DCOMCNFG列表中出現,那麼很可能你沒有註冊正確。一些註冊表編輯器條目可能會丟失。
  • 檢查您的IIS應用程序池設置
  • 您可能需要在web.config中
  • 冒充檢查事件查看器。它可能包括一些重要的線索

在我的情況,我正在玩所有這些項目,但從來沒有在正確的順序。最後,製片人的幫助已經到來,顯示了正確的道路。

+0

你能解釋一下正確的道路嗎? – ftuna 2012-07-26 07:14:39

+0

@ftuna:沒有一條單一的正確路徑,因爲有數百萬個不同的COM DLL。如果你仍然好奇:-)在我的情況下,提供程序告訴我們註銷DLL並註冊一些類似的EXE版本,添加一些未公開的註冊表項,並給予適當的訪問權限。我覺得提供商希望保持這個註冊過程的祕密,因爲他們從實施中賺錢...... – 2012-08-15 11:56:55

相關問題