我有一个非常复杂的场景,我的服务是动态加载的,一切都是以编程方式完成的。特别是我有一个有2个端点的服务
net.pip://本地主机/测试 net.pipe://本地主机/测试/ MEX
我有一个客户端可以毫无问题地访问它,以及WCF测试客户端工具。
我正在尝试从selfhost包装器访问该服务。我已经读过你只是把它当作一个客户端并创建一个工厂和渠道,但有些事情阻止了它的运作。在客户端上运行的相同代码将无法在包装器中运行。代码只是
private IAgentBase GetLocalClient(string serviceEndpointName)
{
var factory = new ChannelFactory<IAgentBase>(serviceEndpointName);
return factory.CreateChannel();
}
这会返回一个代理,然后我在服务上调用一个方法......
var proxy = GetLocalClient("net.pipe://localhost/test");
proxy.DoThis();
但代码只是在某个地方 - 保持运行并且没有错误。声明永远不会完成。当我跨过该行或设置BP或try catch时,它永远不会完成方法调用
答案 0 :(得分:0)
将GetLocalClient更改为以下
public IAgentBase GetlocalClient(string ed)
{
EndpointAddress edi = new EndpointAddress(ed);
var channel = ChannelFactory<IAgentBase>.CreateChannel(new NetNamedPipeBinding(), edi);
return channel;
}