IIS 64bit Com dll

时间:2012-05-21 15:52:16

标签: c# iis dll com interface

您好我正在开发一个应用程序,我需要通过Web服务访问com DLL。

我在win 7上运行IIS 7并使用vs2010进行开发。

在开发环境中一切正常但是当我在本地主机上发布到IIS进行进一步测试时,我收到以下错误:

  

System.Runtime.InteropServices.COMException:检索COM类   带有CLSID的组件的工厂   {29345FBB-4DE7-4838-9464-5A886B775677}因以下原因失败   错误:80040154。

我查了一下,发现如果我将我的应用程序池设置更改为“启用32位应用程序”为true。这将绕过错误,我做了这个,现在我收到以下错误:

  

无法将“ComName.ComClassClass”类型的COM对象强制转换为接口   输入'ComName._ComClass'。此操作失败,因为   QueryInterface在具有IID的接口的COM组件上调用   '{003B251B-6F4E-42A5-8111-11DB41F1D14A}'因以下原因失败   错误:不支持此类接口(HRESULT异常:0x80004002   (E_NOINTERFACE))。

我完全迷失在哪里看,用google搜索它似乎无法找到答案是否有人知道发生了什么?

1 个答案:

答案 0 :(得分:3)

需要在IIS服务器上注册COM dll。 安装安装该COM dll的软件或使用regsvr32.exe“C:.. \ yourdll.dll”

手动完成

[窗口标题] 的RegSvr32

[内容]

要注册模块,您必须提供二进制名称。

用法:regsvr32 [/ u] [/ s] [/ n] [/ i [:cmdline]] dllname

/ u - 取消注册服务器

/ s - 沉默;不显示消息框

/ i - 调用DllInstall传递一个可选的[cmdline];当与/ u调用dll uninstall

一起使用时

/ n - 不要调用DllRegisterServer;此选项必须与/ i

一起使用

如果您认为它已经注册,那么取消注册并重新注册,也许可以执行iisreset:)

示例(假设您的dll直接在C:\中):

C:> regsvr32.exe / u thecomdll.dll

C:> regsvr32.exe thecomdll.dll