从自身主机调用服务



我有一个非常复杂的场景,在这个场景中,我的服务是动态加载的,一切都是通过编程完成的。特别是我有一个服务,它有两个端点

net。pip://localhost/test网pipe://localhost/test/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时,它永远不会完成方法调用

将GetLocalClient更改为以下

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

最新更新