当前位置: 首页 > 编程语言 > C#

COM互操作对象在一个项目中抛出InvalidCastException但在其他项目中不抛出分享

时间:2023-04-10 20:35:17 C#

C#学习教程:COMInterop在一个项目中抛出InvalidCastException而在其他项目中不抛出InvalidCastException一切正常,并继续这样做。然后,我在我的实际解决方案中导入了相同的COM对象,并将与测试项目中完全相同的行作为测试实施。当我运行实际项目时,我得到一个InvalidCastException无法将类型为“CTWebReport.WebReportCOMClass”的COM对象转换为接口类型“CTWebReport.IWebReportCOM”。此操作失败,因为IID为“{5DFA18E8-4E71-4ADC-A812-6B166C242561}”的接口的COM组件上的QueryInterface调用失败并出现以下错误:不支持此类接口(HRESULTexception:0x80004002(E_NOINTERFACE))。我在整个系统中搜索了所有对interop和com库的引用,这包括我能找到的每个bin和obj文件夹。除了原始的COM库之外,我将它们全部删除,并且为了做好措施清理了我的回收站。没有区别,完全一样的情况。测试项目有效,实际项目无效。编辑似乎COM在winforms应用程序中工作,但在我的类库中不工作(由asp.netmvcwebapplicatoin使用)。我不知道下一步该怎么做。建议?区别在于穿线。Winform线程从主线程执行代码,而asp.net则不会。通过在STAThread中显式运行COM解决了这个问题。由于您的COM组件在WinForm应用程序中工作但在ASP.NET中不工作,我认为您可能有一些权限问题。您能否暂时提升ASP.NET运行的权限(例如管理员),看看您是否可以执行该组件?以上是C#学习教程:COM互操作对象在一个项目中抛出InvalidCastException但不抛出所有在其他项目中共享的内容。如果对大家有用,需要进一步了解C#学习教程,还望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: