.net COM +返回IDataReader的对象

时间:2008-09-23 23:15:39

标签: .net com+

我创建了一个从ServicedComponent派生的.net类,并用COM +注册它。该组件实现的接口有一个返回IDataReader的方法。当我从我的客户端应用程序调用服务组件时,一切正常,我可以调用返回IDataReader的方法没有问题但是只要我在对象上调用一个方法就得到异常: “System.Runtime.Remoting.RemotingException:此远程处理代理没有通道接收器,这意味着服务器没有正在侦听的注册服务器通道,或者此应用程序没有合适的客户端通道与服务器通信。”

我对我的代码进行了一些修改,并意识到如果我创建了自己的可序列化的IDataReader实现(具有Seri​​alizable属性),它会起作用。如果实现派生自MarshalByRefObject,则失败。

那么,是否有可能通过COM + ServicedComponents引用返回标准.net对象,如果是这样,我需要做些什么才能实现呢?

2 个答案:

答案 0 :(得分:1)

一篇关于COM与C#互操作的有趣文章,希望它有所帮助:

http://www.codeproject.com/KB/COM/cominterop.aspx

答案 1 :(得分:1)

当您的COM +客户端和COM +组件都受到管理时,CLR会尝试“智能”并尝试切换到使用.Net远程处理作为通信渠道。

要使此方案有效,您可以为实现IDataReader的对象注册远程处理通道。

不幸的是,我无法访问几年前我做过的代码,因此我无法发布样本。 : - (