【问题标题】:How to get more debugging information on IDispatch COM interface failures如何获取有关 IDispatch COM 接口故障的更多调试信息
【发布时间】:2011-11-18 12:13:35
【问题描述】:

我已经实现了一个 c# IDispatch 接口以允许后期绑定到我的托管代码。当某些第三方程序而不是其他程序调用时,它似乎可以工作。它没有进入托管代码部分以输出调试信息。很可能某些接口描述(我从 c++ 转换而来)是不正确的,因此它没有触及代码。是否可以识别第三方软件试图调用的方法?

谢谢

编辑:为了尽量让问题不那么模糊,我将描述症状。我编写了一个测试用例,可以很好地调用 IDispatch 库。它适用于第三方软件。当我第二次运行它时,它会吐出一个错误,但没有关于它在发生错误时尝试调用什么函数的信息。接口中有大约 100 个函数,所以我能想到的唯一选择是按照建议尝试从一些测试代码中调用所有这些函数。这两个第三方软件都是非托管代码。

【问题讨论】:

  • 这是非常模糊的。只是不要,让 CLR 为您实现它。将 [InterfaceType(ComInterfaceType.InterfaceIsDual)] 属性应用于您的接口声明。
  • @Hans 是的,我知道这很模糊。我无法获得足够的信息来将其缩小为一个合理的问题。

标签: c# c++ com interop


【解决方案1】:

如果您怀疑问题出在您的 C# 接口中,那么也许您可以在 C++ 中创建一个代理库并将其插入客户端和服务器之间。代理只会实现 IDispatch 并将所有对 Invoke 的调用转发到服务器上,并且它会记录所有活动。当然,这取决于您的 C++ 接口定义是否正确,但您似乎对此很有信心。

但是在你遇到那个麻烦之前,请仔细检查问题不是更简单的问题。您的描述暗示问题在客户的计算机上很明显,而不是在您自己的计算机上,那么您的服务器是否在该计算机上正确注册?

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多