如何配置客户机连接到相同接口但处于不同作用域的两个WCF服务器端点

本文关键字:作用域 于不同 两个 服务器 WCF 端点 接口 客户机 配置 何配置 连接 | 更新日期: 2023-09-27 17:51:07

我有一个服务,它以编程方式创建了两个相同接口的net-tcp端点,但在不同的范围内(它们在底层做不同的事情)。通常,当服务按预期运行时,客户端服务根据每个点的作用域正确地发现这两点是没有问题的。然而,由于发现不能跨子网工作,在测试时,我通常在我的app.config中添加手动配置,以使我的应用程序成功注册端点,即使发现失败(确实如此)。现在,我如何配置app.config,使其适用于我的新端点?

<?xml  version="1.0"?>
<configuration>
    <system.serviceModel>
        <client>
            <endpoint
                address="net.tcp://myserver:2170/"
                binding="netTcpBinding"
                contract="IMyServiceInterface"
                name="Service1"/>
            <endpoint
                address="net.tcp://myserver:2173/"
                binding="netTcpBinding"
                contract="IMyServiceInterface"
                name="Service2"/>
        </client>
    </system.serviceModel>
</configuration>

如何配置客户机连接到相同接口但处于不同作用域的两个WCF服务器端点

如果你尝试用这个构造函数动态地创建服务客户端怎么办

public ServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) 

不确定您的问题到底是什么。我不明白为什么要在客户端研究接口,因为行为应该在服务器端定义。根据我的理解,你只需要生成你的客户端类一次(它是由VS自动完成),并使用它的构造函数,像这样:

var remoteAddr = "net.tcp://myserver:2173/";
var client = new MyClient("*",remoteAddr);

在你的app.config中将只有一个配置,指向某个默认服务器。