任何人都可以在Windows Server 2008 R2中使用VB 6.0讲述如何在IIS 7.0中调试Com Dll。 我能够使用interop dlll从Console应用程序访问VB 6.0中的断点。通过IIS 7.0中的ASPX页面我得到以下异常
无法转换“XCreateUser.XAcctUserProfileClass”类型的COM对象 接口类型'XCreateUser._XAcctUserProfile'。这个操作 失败,因为QueryInterface调用了COM组件 与IID'{7A48FABA-CCC8-4FA6-94E8-803F6CF121F2}'的接口失败到期 出现以下错误:加载类型库/ DLL时出错。 (例外 来自HRESULT:0x80029C4A
已经生成DLL并注册并生成了com interop dll。
请有人对此进行说明
答案 0 :(得分:2)
已经建立并注册了DLL
"注册"这是问题,它没有正确注册。这是CLR在尝试查找[ComVisible]的.NET组件的代理时生成的异常消息。需要一个代理来从工作线程调用COM组件,该工作线程没有做任何事情来帮助使调用成为线程安全的。 MTA中的一个线程,通常是一个线程池线程。
.NET组件已在Regasm.exe注册。您忘了使用/tlb
参数。
应该很容易修复。如果你还有麻烦,那么SysInternals' Process Monitor是首选武器。
答案 1 :(得分:1)
我通常会通过控制台或Windows窗体应用程序调试这些内容。您始终可以向Web应用程序添加日志记录,以查看传递给它的参数。
通常,在64位平台上运行和使用32位dll时,上述错误是设置问题。要确保的一件事是您的应用程序池允许32位应用程序。在IIS管理器中右键单击运行您的网站的应用程序池,然后转到“高级设置” - >“启用32位应用程序”。将其设置为True。
您还需要确保在32位注册表配置单元中注册了32位dll。 C:\ Windows \ syswow64 \ regsvr32是您需要用来注册此dll的版本。