具有WCF服务代理可配置

时间:2014-09-23 09:19:48

标签: c# wpf web-services wcf

我正在编写一个基本的WPF GUI来连接到WCF服务并使用接口。到目前为止,我通过创建服务引用连接到测试系统,输入我想要使用的测试服务的URI,它找到接口并通过服务引用为我创建代理。

当您运行GUI应用程序时,我希望这样做是为了让用户能够选择一个环境 - 开发,测试或生产,然后根据所选环境连接到适当的WCF服务。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以像这样覆盖Endpoint

client.Endpoint.Address = new EndpointAddress(GetAddressForCurrentMode())

另一种方法是编写一个方法,可能是一个扩展方法,它接受服务契约和实现类。此外,它接受配置名称或端点:

public static TClient GetServiceClient<TClient, TContract>(string endpoint)
    where TClient : ClientBase<TContract>
{
   // Construct client
}

要构建客户端,请使用BaseClient<T>重载之一(from MSDN)。

然后使用客户端,只需正常使用上述方法:

using(var client = ServiceInterop.
    GetServiceClient<MyClient, IMyContract>("http://foo.bar"))
{
    // Consume client
}