什么是app.config的<client>元素?</client>

时间:2009-08-23 07:47:48

标签: .net wcf

app.config的<client>元素是什么?

为什么在添加服务引用时将其添加到客户端?

如何以编程方式访问此元素?

2 个答案:

答案 0 :(得分:0)

它与WCF服务端的<service>部分相对应。它主要用于配置用于将客户端和服务连接在一起的端点。换句话说,它表示连接到服务的位置以及要使用的绑定。

例如,如果您在IIS中托管了WCF服务,则可能包含以下部分:

<system.serviceModel>
  <services>
    <service name="MyService">
      <endpoint address="http://localhost:8080/MEX" binding="mexHttpBinding" bindingConfiguration="" name="mex" contract="IMetadataExchange" />
      <endpoint address="http://localhost:8111" binding="wsHttpBinding" bindingConfiguration="WS_HTTP_Secure" name="WS_HTTP_Endpoint" contract="IMyService" />
    </service>
  </services>
</system.serviceModel>

因此,在客户端,您将拥有<client>部分的相应条目集,例如

<system.serviceModel>
  <client>
    <endpoint address="http://localhost:8111/" binding="wsHttpBinding" 
      bindingConfiguration="WS_HTTP_Endpoint_Binding" contract="MyService" name="WS_HTTP_Endpoint" />
  </client>
</system.serviceModel>

通常不需要以编程方式访问此部分。将服务引用添加到项目中会将代理类添加到项目中,并且在使用这些类时,您可以指定要在其中使用的端点。例如,假设您将服务类称为“MyService”,您可以将其初始化为:

MyServicesClient client = new MyServicesClient("WS_HTTP_Endpoint");

除非你有多个端点,否则不需要像这样在构造函数中实际指定它。

答案 1 :(得分:0)

通过添加对System.Configuration程序集的引用,您还可以根据需要将<client>部分加载到内存中,并在那里进行检查:

using System.Configuration;
using System.ServiceModel.Configuration;

.....

ClientSection clientSection = 
   (ClientSection)ConfigurationManager.GetSection("system.serviceModel/client");

但通常情况下,您只会使用Gavin Schultz描述的方法 - 让ServiceModel处理该部分的读取和解释,并为您提供一个客户端代理来调用您的服务。

马克