您好我正在开发一个应用程序,我需要通过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搜索它似乎无法找到答案是否有人知道发生了什么?
答案 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