相关疑难解决方法(0)

Remoting和丢失频道接收器

我遇到了一个远程异常:

"此远程处理代理没有通道接收器,这意味着服务器没有正在侦听的注册服务器通道,或者此应用程序没有合适的客户端通道与服务器通信."

我找到的博客文章最好地解释了原因:

第二种情况更加模糊.这发生在客户端调用服务器,服务器返回对象引用,然后客户端对服务器上引用的对象进行调用的情况.如果引用的对象位于服务器上的辅助AppDomain中,则可能抛出上述异常.如果出现问题,那是因为频道注册仅适用于调用RegisterChannel且未在辅助AppDomain中注册的频道的AppDomain.返回到客户端的对象引用指向辅助AppDomain中的对象,而不是指向主AppDomain中的代理,因此客户端和辅助AppDomain之间没有通道,调用可以通过该通道.解决方案:在引用对象所在的辅助AppDomain中注册通道.

这确实适合我的场景,因为我有一个服务将插件加载到单独的appdomains中.对象实例(在所有程序集引用的程序集中定义的接口的实现)在辅助应用程序域中创建并由服务引用(跨应用程序域,因此服务具有代理引用).然后,该服务将这些代理引用返回给应用程序.应用程序和服务之间存在已注册的通道,但插件和应用程序之间没有任何通道.

我认为代理就足以跨越appdomain边界.我真的必须在插件和应用程序之间创建通道吗?这似乎不对,所以我必须遗漏一些东西.

.net remoting appdomain

6
推荐指数
2
解决办法
5203
查看次数

标签 统计

.net ×1

appdomain ×1

remoting ×1