检测到了NonComVisibleBaseClass;我该如何修复?

14

我的类继承自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 Forms 和 Entity Framework 的项目中也遇到了这个错误。因此,我已经在 Jeremy 的答案中留下了评论,因为在 Visual Studio 2019 中找到此设置的位置已经发生了变化。 - Matt
2个回答

18

我最近在一个与你完全不同的场景中发现了这个错误。

  1. 导航到“调试(Debug)”->“异常(Exceptions)…”
  2. 展开“托管调试助手(Managed Debugging Assistants)”
  3. 取消选中“NonComVisibleBaseClass Thrown”选项。
  4. 单击[确定(Ok)]

这里有更多信息,可能会有所帮助。

只是为了保持最新:

在Visual Studio 2019中:Debug菜单,窗口 --> 异常设置(Exception settings),打开“异常设置”窗口。在其中展开“托管调试助手(Managed Debugging Assistants)”,最后取消选中 NonComVisibleBaseClass 。


2
  1. 导航到 "调试(Debug)" -> "异常(Exceptions)..."
  2. 展开 "托管调试助手(Managed Debugging Assistants)"
  3. 取消选中 "非可见基类抛出(NonComVisibleBaseClass Thrown)" 选项。
  4. 点击 [确定(Ok)]
- VitalyB
5
Visual Studio 2019中一开始找不到它。这里是位置:调试菜单,窗口 --> 异常设置,打开异常设置窗口。在那里展开“托管调试助手”,最后取消选中NonComVisibleBaseClass - Matt

0

这是在告诉你:

你的项目包含一些未签名公共使用密钥的基于COM的对象。

有两种解决方案:

1- 从调试器设置中取消勾选“NonVisibleCome”选项

2- 找到你的对象代码进行签名并重新构建它。


1
这与代码签名有什么关系? - StayOnTarget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接