检测到 NonComVisibleBaseClass;我该如何解决?
Posted
技术标签:
【中文标题】检测到 NonComVisibleBaseClass;我该如何解决?【英文标题】:NonComVisibleBaseClass was detected; How do I fix this? 【发布时间】:2010-11-06 04:34:52 【问题描述】:我的类派生自 System.Web.Security.MembershipUser 提交表单时出现此错误。弹出表单使用 ASPPDF,并且在实现自定义 MembershipProvider 好东西之前应用程序没有这个问题。请注意,这只是一个调试错误。当我不调试时,它似乎工作。有谁知道我该如何解决这个问题?
检测到 NonComVisibleBaseClass 消息:进行了 QueryInterface 调用,请求 COM 可见托管类“XyAmpUser”的默认 IDispatch 接口。但是,由于此类没有明确的默认接口并且派生自非 COM 可见类“System.Web.Security.MembershipUser”,因此 QueryInterface 调用将失败。这样做是为了防止非 COM 可见的基类受到 COM 版本控制规则的约束。
谢谢, ~ck 在圣地亚哥
【问题讨论】:
注意: 这不仅发生在 asp.net 和 pdf 生成中,我在使用 .NET Windows 窗体和实体框架的项目中也遇到了这个错误。因此,我在 Jeremy 的回答中留下了评论,因为在 Visual Studio 2019 中找到此设置的位置已更改。 【参考方案1】:我最近在与您完全不相关的场景中发现了此错误。
-
导航到调试->异常...
展开“托管调试助手”
取消选中 NonComVisibleBaseClass Thrown 选项。
点击[确定]
Here is more information, which may help.
只是为了保持最新状态:
在 Visual Studio 2019 中:调试菜单,Windows --> 异常设置,打开异常设置窗口。在那里展开“托管调试助手”,最后取消选中 NonComVisibleBaseClass
【讨论】:
复制链接线程中的答案以防它消失:“1. 导航到 Debug->Exceptions... 2. 展开“Managed Debugging Assistants” 3. 取消选中 NonComVisibleBaseClass Thrown 选项。 4.点击【确定】” 先在 Visual Studio 2019 中找不到。这里是:Debug菜单,Windows --> Exception settings,打开Exception settings窗口。展开 "Managed Debugging Assistants" 最后取消选中 NonComVisibleBaseClass【参考方案2】:这告诉你: 您的项目包含一些基于 COM 的对象,这些对象未使用公共使用密钥进行签名。
这种情况有两种解决方案:
1- 从调试器设置中取消选中 NonVisibleCome 选项
2- 找到你的对象代码签名并重建它。
【讨论】:
为什么这和代码签名有关系?以上是关于检测到 NonComVisibleBaseClass;我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章