从自己的主机呼叫服务

时间:2015-04-08 15:07:55

标签: c# wcf

我有一个非常复杂的场景,我的服务是动态加载的,一切都是以编程方式完成的。特别是我有一个有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时,它永远不会完成方法调用

1 个答案:

答案 0 :(得分:0)

将GetLocalClient更改为以下

 public IAgentBase GetlocalClient(string ed)
    {
         EndpointAddress edi = new EndpointAddress(ed);
        var channel = ChannelFactory<IAgentBase>.CreateChannel(new NetNamedPipeBinding(), edi);
        return channel;
    }