2011-06-01 42 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