如何以编程方式创建此配置

本文关键字:创建 配置 方式 编程 | 更新日期: 2023-09-27 18:15:59

我有一个WCF,我需要动态地创建这个配置,因为我的App.config在客户端机器上永远不会改变。

有人帮忙吗?

<behaviors>
  <endpointBehaviors>
    <!-- REST -->
    <behavior name="restBehavior">
      <webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped"/>
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="defaultBehavior">
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<client>
  <endpoint name="json" address="http://localhost:8080/json"
               binding="webHttpBinding"
               bindingConfiguration="webBinding"
               behaviorConfiguration="restBehavior"
               contract="ServiceReference.ServiceClientContract" />
</client>

如何以编程方式创建此配置

配置文件中的大多数WCF元素都有可以在代码中设置的相应类或属性(这大概就是您所说的"动态"?)例如,'endpointBehaviors'可以通过ServiceEndpoint类的行为属性来访问:

Uri baseAddress = new Uri("http://localhost:8001/Simple");
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
ServiceEndpoint endpoint = serviceHost.AddServiceEndpoint(
    typeof(ICalculator),
    new WSHttpBinding(),
    "CalculatorServiceObject");
endpoint.Behaviors.Add(new MyEndpointBehavior());
Console.WriteLine("List all behaviors:");
foreach (IEndpointBehavior behavior in endpoint.Behaviors)
{
    Console.WriteLine("Behavior: {0}", behavior.ToString());
}
http://msdn.microsoft.com/en-us/library/system.servicemodel.description.serviceendpoint.behaviors.aspx

在MSDN中搜索您感兴趣的任何元素应该足以让您开始。