带COM库的IIS和IISExpress

问题描述 投票:0回答:1

我的Web应用程序用COM库工作,我使用了这段代码。

Type headType = Type.GetTypeFromProgID("Eapi.Head");
dynamic head = null;
head = Activator.CreateInstance(headType);

而我在理解IIS的工作时遇到了一些问题。当我在VisualStudio中调试我的Web应用时,运行IISExpress,所有的工作都可以进行,但在IIS上发布项目后,应用程序找不到COM库。但在IIS上发布项目后,应用程序找不到COM库。

HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)

在同一台电脑上安装IIS,因为我正在开发项目。

我用两种方式注册这个dll。

C:\WINDOWS\system32>regsvr32.exe c:\EOS\Delo\API\Eapi.dll
C:\WINDOWS\system32>cd ..
C:\Windows>cd SysWOW64
C:\Windows\SysWOW64>regsvr32.exe c:\EOS\Delo\API\Eapi.dll
C:\Windows\SysWOW64>
c# iis com
1个回答
0
投票

当涉及到 0x80040154 REGDB_E_CLASSNOTREG 而且你确定你注册的是COM服务器,那么问题很可能是3264位不匹配。

不管你用哪个regsvr32。它将用DLL的位数注册进程中的COM服务器。.

IIS应用池有自己的位性设置,当两者不匹配时,你的进程中COM服务器就会变得不可用。

典型的解决方法是分别为另一个位数和寄存器建立DLL,或者改变IIS应用池的位数来达到匹配。请看这里:

© www.soinside.com 2019 - 2024. All rights reserved.