2011-06-01 71 views
0

我在asp.net應用程序中使用了一個activex/com對象(由Unify Vision應用程序生成)。我收到以下錯誤。IIS中的COM互操作問題 - 對象創建失敗

System.InvalidCastException:創建從IClassFactory的CLSID {9C2D0002-3A17-11E0-8000-FC9865BE5C68}的COM組件的一個實例失敗,原因是出現以下錯誤:80004002

我嘗試以下方法

  1. 我試圖在控制檯應用程序中使用activex/com對象。在那裏,我能夠創建對象,並得到了結果(雖然應用程序掛在那之後)

  2. 如果我在Visual Studio中運行asp.net應用程序,內置web服務器(賭場)和文件系統作爲選項(無需將其部署到IIS),它正在工作。

  3. 但是,當我將它部署到IIS時,它失敗。即使我嘗試模仿,註冊表權限,並給予aspnet帳戶/ iis啓動器帳戶管理員權限。 但沒用。我嘗試unistalling和重新安裝的ActiveX/COM對象,但沒有任何工作。

我目前用完想法。請幫忙。

感謝, sveerap

+0

如果你爲你的COM DLL在DllGetClassObject中設置了斷點,那斷點是否命中?你的對象的構造函數呢? – 2011-06-01 04:00:20

+0

COM是第三方組件,不是由我們編寫的。雖然我不確定'DllGetClassObject'方法。是我們可以寫在COM上的東西嗎?我在我的項目中添加了com作爲參考,並像使用它一樣使用它.net組件 – sveerap 2011-06-01 04:22:13

+0

DllGetClassObject是DLL如何公開COM對象的一部分。如果這是第三方COM組件,組件供應商是否提供調試版本或源代碼? – 2011-06-01 06:20:11

回答

1

你的COM組件可能需要一個STA線程上運行。嘗試啓動一個STA線程並在那裏運行代碼。只是爲了測試。

+0

是的,這是最可能的原因。 – sharptooth 2011-06-01 05:15:06

+0

我在@page指令中添加了屬性AspCompat =「true」,但仍然出現相同的錯誤 – sveerap 2011-06-01 09:37:16

+0

快速Internet搜索產生以下有前途的文章:http://msdn.microsoft.com/en-us/magazine/cc163544.aspx和http://support.microsoft.com/kb/308095 – 2011-06-01 10:14:27