代码之家  ›  专栏  ›  技术社区  ›  James Kolpack

WCF客户端配置-基址?

wcf
  •  5
  • James Kolpack  · 技术社区  · 15 年前

    我正在将一个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 回复  |  直到 15 年前
        1
  •  3
  •   marc_s    15 年前

    WCF中有一个基地址的概念——不幸的是,只有当您自己托管(例如,在控制台应用程序或NT服务中托管您的服务)时,这个概念才有效。但是,这只在服务器端工作——在客户机端没有类似的东西。在客户端,您总是必须定义端点应该连接到的完整的服务地址。

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