我想将端点配置存储在.config文件中,但能够在运行时修改基址。 EG:这些都是我的端点定义中的app.config:从客户端获取/修改地址端点配置
<endpoint address="net.tcp://BASEURI:1001/FooService/"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Common"
contract="ServiceContracts.MyService"
name="FooService" />
<endpoint address="net.tcp://BASEURI:1002/BarService/"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Special"
contract="ServiceContracts.MyService"
name="BarService" />
每个服务都使用相同的合同(ServiceContracts.MyService
),但住在不同的端口,不同的路径,有时不同的绑定配置上。
我希望能够以编程方式提取地址“的net.tcp://基本URI/FooService接口/”,将“基本URI”与服务器的地址,然后当客户端通过这个作为地址的DuplexChannelFactory连接已创建。 EG:
string ServiceToUse = "FooService";
var endpointConfig = SomeFunctionThatGetsTheConfig(ServiceToUse);
string trueAddress = endpointConfig.Address.Replace("BASEURI", "192.168.0.1");
DuplexChannelFactory<FooService> client =
new DuplexChannelFactory<FooService>(ServiceToUse, new EndpointAddress(trueAddress));
我知道,客户终端不支持< baseAddress的服务端点>功能,但我的目的是要变通,不知怎的让我不必知道是什么其余的URI或绑定是。
注意:我没有使用Proxy类,我直接使用DuplexChannelFactory。
完美,第一次工作。非常感谢。编辑:WCF似乎转换服务器部分ToLower,所以你必须匹配“baseuri”而不是“BASEURI”。否则,它工作正常。 – 2011-02-24 19:14:11