4

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

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

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

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

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

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

我完全不知道在哪里看,用谷歌搜索它似乎找不到答案,有没有人知道发生了什么?

4

1 回答 1

3

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


[窗口标题] RegSvr32

[内容]

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

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

/u - 注销服务器

/s - 静音;不显示任何消息框

/i - 调用 DllInstall 并传递一个可选的 [cmdline];与 /u 一起使用时调用 dll 卸载

/n - 不调用 DllRegisterServer;此选项必须与 /i 一起使用


如果您认为它已经注册,请取消注册并重新注册,也许做一个 iisreset :)

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

C:>regsvr32.exe /u thecomdll.dll

C:>regsvr32.exe thecomdll.dll

于 2012-05-21T17:08:47.333 回答