我创建了一个派生自 ServicedComponent 的 .net 类,并将其注册到 COM+。该组件实现的接口有一个返回 IDataReader 的方法。当我从客户端应用程序调用服务组件时,一切正常,我可以调用返回 IDataReader 的方法没有问题,但是一旦我调用对象上的方法,我就会得到异常:“System.Runtime.Remoting.RemotingException:这个远程处理代理没有通道接收器,这意味着服务器没有注册的服务器通道正在侦听,或者此应用程序没有合适的客户端通道与服务器通信。”
我稍微修改了我的代码,并意识到如果我创建自己的可序列化(具有 Serializable 属性)的 IDataReader 实现,它将起作用。如果实现派生自 MarshalByRefObject 则失败。
那么,是否可以通过 COM+ ServicedComponents 的引用返回标准 .net 对象,如果可以,我需要做些什么来实现它?