2009-10-29 67 views
0

我有一个过程,我们称之为过程A,它承载通过基本Http绑定公开的简单WCF服务。如果我启动该进程,则可以从另一个进程(进程B)访问该服务,而不会出现问题。从远程DLL调用WCF服务

但是,我所需的用例并不那么简单。我需要做的是从一个使用Remoting托管的DLL访问服务。远程DLL通过进程A在单独的AppDomain中启动,并且位于本地计算机上。

当我从进程A调用远程DLL中的一个方法,进程A反过来应该调用过程A中托管的WCF服务时,调用者只是挂起,一分钟后我得到服务超时。服务代码永远不会被输入(当从外部调用外部函数时,会触发一个断点)。

Remoting DLL 能够创建客户端代理类的一个实例的事实告诉我(如果我在这里,请纠正我)该服务的配置至少在Remoted客户端中可用。如果我删除了服务引用,它不会抱怨丢失的配置信息,或者抛出异常,像在外部客户端中那样。

所以我想我的问题是多方面的。首先,远程DLL可以首先调用WCF服务(即客户端可用的所有必需基础结构)吗?如果可以,我会错过什么?一个人怎么去调试这样的事情呢?调试远程是一件很简单的事情 - 这并不是那么简单。

最后一件事 - 我无法改变我在一个远程处理DLL的过程中,并且远程DLL需要使用该服务。这是该应用程序基础架构中深深扎根的部分。但是,如果WCF服务有任何用处,我可以将它们托管到另一个进程(我可以在等待这里的任何答案时尝试这种方式)。

回答

0

最后我们彻底删除了Remoting。这是更多的工作,但是是正确的。

0

远程DLL能够创建客户端代理类的一个实例的事实并不意味着配置正常。

确保您使用与服务器使用的基地址相同的协议和安全模式。

因为你在同一台机器上应该没有网络问题。

+0

这一切都在同一台机器上。难道这个类可以创建的事实告诉我一些配置正在被读取,不一定这是正确的,但至少它是被发现和加载的? – ctacke 2009-10-29 14:21:36

+0

我不认为WCF关心呼叫到达的“来自哪里”。 为什么您使用WCF服务的同一进程中的远程dll? – Dani 2009-10-29 14:23:03

+0

您可以使用错误的参数创建代理,直到您调用某些内容为止 - 它不会引发异常。 – Dani 2009-10-29 14:28:14