代码之家  ›  专栏  ›  技术社区  ›  Kepboy

返回IDataReader的.NET COM+对象

  •  0
  • Kepboy  · 技术社区  · 16 年前

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

    我对代码进行了一番黑客攻击,并意识到如果我创建自己的可序列化的IDataReader实现(具有可序列化属性),它将起作用。如果实现从MarshalByRefObject派生,则失败。

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

    2 回复  |  直到 16 年前
        1
  •  1
  •   Ricardo Amores    16 年前

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

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

        2
  •  1
  •   Franci Penov    16 年前

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

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

    不幸的是,我无法访问这几年前的代码,所以我无法发布示例。: