【问题标题】:Having WCF service proxy configurable具有可配置的 WCF 服务代理
【发布时间】:2014-09-23 09:19:47
【问题描述】:

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

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

我该怎么做?

【问题讨论】:

  • 您的环境之间有什么区别?只是服务网址? GUI 是否知道 URL 和环境之间的连接?
  • 只是服务 URL 是的,如果我在配置中的某处定义它,它只会知道 URL 和环境之间的连接

标签: c# wpf web-services wcf


【解决方案1】:

您可以像这样覆盖Endpoint

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

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

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

要构造客户端,请使用BaseClient&lt;T&gt; 重载之一 (from MSDN)。

接下来要消费客户端,照常使用上面的方法即可:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 2013-10-24
    相关资源
    最近更新 更多