【问题标题】:.net COM+ object that returns IDataReader返回 IDataReader 的 .net COM+ 对象
【发布时间】:2008-09-25 12:29:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: .net com+


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 1970-01-01
      • 2011-09-14
      • 2011-08-05
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      相关资源
      最近更新 更多