【发布时间】:2009-10-29 14:09:56
【问题描述】:
我有一个进程,我们称之为进程 A,它托管一个通过基本 Http 绑定公开的简单 WCF 服务。如果我启动该进程,我就可以从另一个进程进程 B 访问该服务,而不会出现任何问题。
但是,我需要的用例并不是那么简单。我需要做的是从使用 Remoting 托管的 DLL 访问服务。远程 DLL 由进程 A 在单独的 AppDomain 中启动,并且位于本地计算机上。
当我从进程 A 调用远程 DLL 中的一个方法时,该方法又应该回调到进程 A 中托管的 WCF 服务,调用者只是挂起,一分钟后我得到一个服务超时。永远不会输入服务代码(永远不会到达在外部调用它时遇到的断点)。
远程 DLL 能够创建客户端代理类的实例这一事实告诉我(如果我在这里错了,请纠正我)该服务的配置至少在远程客户端。如果我删除服务引用,它不会像在外部客户端中那样抱怨缺少配置信息或抛出异常。
所以我想我的问题是多部分的。首先,远程 DLL 是否可以首先调用 WCF 服务(即客户端是否可以使用所有必需的基础设施)?如果可以,我可能会错过什么?以及如何调试这样的东西?当它是一个简单的案例时,调试远程处理是很痛苦的 - 而这并不是那么简单。
最后一件事 - 我无法改变这样一个事实,即我处于远程处理 DLL 的进程中,并且远程 DLL 需要使用该服务。这是该应用程序基础架构中根深蒂固的一部分。但是,如果有任何用途,我可以将大多数 WCF 服务托管到另一个进程(我可能会在此处等待任何答案时尝试这样做)。
【问题讨论】: