wcf - 向 IIS7.5 注册 COM .dll (REGDB_E_CLASSNOTREG)

标签 wcf iis-7.5 syswow64

这个问题快把我逼疯了。我有一个 WCF 服务,它使用 COM .dll(位于 SysWOW64 中)来执行一些操作。我在Windows 2008 R2上注册了它,但是当该服务部署在服务器上时它不起作用。我的服务是针对“任何 cpu”编译的。

当我创建控制台应用程序时,它工作正常。我究竟做错了什么?是权限问题吗?我将应用程序池用户更改为管理员,但也不起作用。当我尝试将池更改为 32 位应用程序时,池崩溃或服务超时。

错误信息是:

System.Runtime.InteropServices.COMException:由于以下错误,检索 CLSID 为 {47E736CA-3EEA-11D5-8400-00A0C9CA15AD} 的组件的 COM 类工厂失败:80040154 类未注册(HRESULT 异常: 0x80040154(REGDB_E_CLASSNOTREG))。

有人能指出我正确的方向吗?

最佳答案

那是因为你的 COM DLL 是 32 位的。 SysWOW64 适用于 64 位 Windows 上的 32 位组件。您的控制台应用程序可以运行,因为它是作为 x86 构建的(检查项目属性),但 IIS 应用程序池是 64 位。

您需要在 IIS 中创建一个新的应用程序池,转到高级属性并将启用 32 位应用程序设置为 True。这将为您创建一个 32 位应用程序池,并且您的 COM dll 将被找到。

关于wcf - 向 IIS7.5 注册 COM .dll (REGDB_E_CLASSNOTREG),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7051529/

相关文章:

node.js - 将 csv 文件上传到 Web api 时出现 502 错误

c# - IIS 在异步请求的每个响应之间延迟很多

asp.net-mvc - 发现 IIS/IIS Express 中配置的 HTTPS 端口?

vb.net - Windows 7 中的 System32 文件夹

c# - 为什么 Configuration.FilePath 返回不存在的文件?

c# - 从Silverlight客户端中的WCF获取更多错误详细信息

wcf - 在主机 ('Anonymous' 上配置的身份验证方案不允许在绑定(bind) 'BasicHttpBinding' ('Negotiate' 上配置的身份验证方案。

.net - 从数据 block 创建.Net Stream

.net - wcf 服务(类)级别的 OperationBehavior