2

我已经向 Silverlight 应用程序添加了 WCF 服务引用,这就是我拥有的来自 web.config 的绑定的样子

<bindings>
  <wsDualHttpBinding>
    <binding name="wsDualHttpBinding">
      <security mode="None" />
    </binding>
  </wsDualHttpBinding>
  <pollingDuplexHttpBinding>
    <binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
      duplexMode="MultipleMessagesPerPoll" />
  </pollingDuplexHttpBinding>
</bindings>

我有这个片段来创建一个服务客户端实例

var serviceClient = new DuplexCallerIdServiceClient(
         new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll),
      new EndpointAddress("http://localhost:51445/Service/MyService.svc"));

我担心的是为什么我必须在代码中提供绝对 url。我有一个使用相同服务的 winforms 应用程序,我可以new DuplexCallerIdServiceClient()创建一个看起来很理想的服务客户端实例。有什么办法可以解决它。我无法更改绑定设置。

谢谢

4

1 回答 1

0

您不必对服务 URL 进行硬编码。替换作为参数传入或进行函数调用(或获取某些对象的属性)的硬编码字符串,以使用有效的服务 URL 填充构造函数。

这是众多方法中的一种:

var serviceClient = new DuplexCallerIdServiceClient(
     new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll),
  new EndpointAddress(Info.Instance.ServiceURL));

其中 Info 是一个单例对象,Instance 获取单例的实例,ServiceUrl 是一个字符串属性,它来自... 任何地方。数据库,配置文件,硬编码启动等...

PS 注意单例模式,但作为配置信息实体,它们可能非常有用。

于 2011-10-21T18:20:13.583 回答