1

现在,我的客户端web.config 中有多个服务,如下所示:

<endpoint address="http://hostname/ServiceA.svc"
         binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding"
         contract="ServiceReference.ISearchService" name="ServiceA">
</endpoint>

<endpoint address="http://hostname/ServiceB.svc"
         binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_MyBinding"
         contract="ServiceReference.ISearchService" name="ServiceB">
</endpoint>

还有更多

此 web.config 使托管环境之间的切换变得困难且容易出错,因为您需要替换所有和每个端点地址上的“主机名”。

我想以某种方式添加一个环境应用程序设置或某处可以让我指定主机的东西,并让端点像这样被解析http://{hostA}/ServiceX.svc

我是否需要以编程方式做一些魔术,或者我可以单独从配置中做到这一点?

4

1 回答 1

2

您需要通过代码来完成 - 配置中没有“通配符”可用于该<system.serviceModel / client>部分中的基地址。但是,您可以在配置中使用一些占位符(例如“localhost”)并在代码中首先加载配置,然后使用实际值更新服务器名称(也可以将其存储在配置中,例如,在 AppSettings 中,或别的地方)。

var factory = new ChannelFactory<ISearchService>("ServiceA");
factory.Endpoint.Address = ReplaceServerName(factory.Endpoint.Address);
var proxy = factory.CreateChannel();
...
于 2011-08-03T20:32:33.900 回答