使用RFCOMAPIlib(RightFax COM API):无法强制转换COM对象

使用RFCOMAPIlib(RightFax COM API):无法强制转换COM对象,api,com,queryinterface,rightfax,Api,Com,Queryinterface,Rightfax,我正在使用RightFax COM API。我想做的只是发送一份带有附件的传真。简单对吧?这个问题已经回答了好几次了。然而,当我在应用程序中使用这些代码时,我遇到了一些小麻烦 应用:RightFax 9.4 语言:C#(ASP.NET应用程序) IDE:MS Visual Web开发快车 目标框架:.NET 3.5 操作系统:Windows 7 using ... public static void SendFax(<arguments>) { RFCOMPAPILib.F

我正在使用RightFax COM API。我想做的只是发送一份带有附件的传真。简单对吧?这个问题已经回答了好几次了。然而,当我在应用程序中使用这些代码时,我遇到了一些小麻烦

应用:RightFax 9.4
语言:C#(ASP.NET应用程序)
IDE:MS Visual Web开发快车
目标框架:.NET 3.5
操作系统:Windows 7

using ...
public static void SendFax(<arguments>)
{
    RFCOMPAPILib.FaxServerClass fs = new RFCOMAPILib.FaxServerClass();
    fs.Name = "faxSvrName";
    // BOOM, exception
}
使用。。。
公共静态void SendFax()
{
RFCOMPAPILib.FaxServerClass fs=新的RFCOMAPILib.FaxServerClass();
fs.Name=“faxSvrName”;
//繁荣,例外
}
我甚至连服务器的名字都不知道

异常详细信息:
无法将“RFCOMAPILib.FaxServerClass”类型的COM对象强制转换为接口类型“RFCOMAPILib.Form”。此操作失败,因为对IID为“{9F386618-764B-48F8-A5BF-3682B03DE840}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT的异常:0x80004002(E_NOINTERFACE))


所以。有什么建议吗?

这个COM接口设计过度了一点,但这种模式并不罕见。COM类可以实现多个接口,其中一个是默认接口。这种机制在.NET中不存在,它不支持多重继承或默认接口的概念。Tlbimp合成了一个名为mumbleClass的假包装类来包装名为mumble的辅类。这是由所有接口实现的所有方法的包。异常消息告诉您的是FaxServer类的默认接口名为“Form”。并且该RFCOMAPILib.Form不能强制转换为RFCOMAPILib.FaxServerClass。没什么好惊讶的

您需要将代码重写为类似以下内容:

 RFCOMPAPILib.FaxServer fs = new RFCOMAPILib.FaxServerClass();
 fs.Name = "faxSvrName";

我完全是在猜测接口名称,“IFaxServer”的可能性。使用对象浏览器查找实际名称。

正确猜测接口名称。我将测试它,明天带着结果回来。谢谢,这很有效。但它仍然不会发送:P现在我只需要确定这个失败,可能与服务器有关,而不是与程序有关。谢谢你的帮助!