.net COM+;返回IDataReader的对象

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

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

我对我的代码进行了一些黑客攻击,并意识到如果我创建了自己的可序列化的IDataReader实现(具有serializable属性),那么它就可以工作了。如果实现派生自MarshalByRefObject,则会失败


那么,是否可以通过引用从COM+ServicedComponents返回标准的.net对象?如果可以,我需要做什么来实现它?

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

要使此场景正常工作,可以为实现IDataReader的对象注册远程处理通道

首先,我无法访问几年前编写的代码,因此无法发布示例:-(