WCF客户端配置 - 基地址?

时间:2010-01-06 21:13:24

标签: wcf

我正在将WCF客户端连接到一组服务,这些服务都实现相同的合同,并且都在同一主机上。我希望有一种方法可以结合端点定义来减少配置混乱。我也不愿意以编程方式来做 - 只是通过配置。现在,我的配置重复多次:

<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>

// continued for ServiceC, ServiceD, etc

对于服务器配置,有一些notion of "baseAddressPrefixFilters"可用于此目的 - 是否有任何客户端配置?

1 个答案:

答案 0 :(得分:3)

WCF中存在基地址的概念 - 遗憾的是,只有在您自托管时才能使用,例如:在控制台应用程序或NT服务中托管您的服务。但是,这只适用于服务器端 - 客户端没有类似的东西。在客户端,您始终必须定义端点应连接的完整服务地址。

如果您在IIS中托管,则您的服务地址由服务器名称,虚拟目录(以及可能的子目录)和用于在IIS中托管服务的* .svc文件的名称决定。这是一个固定的系统约定,不幸的是你无法影响它(.NET 4将为此带来一些补救措施)。