如何以编程方式配置WCF数据服务?

时间:2011-10-25 15:35:33

标签: wcf-data-services astoria

如何在C#中流畅配置以下WCF数据服务?

<configuration>

  ...

  <system.serviceModel>
    <services>
      <service name="Foo.WebServices.FooService">
        <endpoint address="http://localhost:8081/PhoenixData" 
                  binding="webHttpBinding" 
                  bindingConfiguration=""
                  contract="System.Data.Services.IRequestHandler" />
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>  
</configuration>

1 个答案:

答案 0 :(得分:5)

以下内容将配置等效DataServiceHost,侦听端点uri

DataServiceHost CreateServiceHost(Uri uri)
{
    var host = new DataServiceHost(typeof(FooDataService), new Uri[] { });

    // these may need to be added if they don't already exist.
    host.Description.Behaviors.Find<ServiceMetadataBehavior>().HttpGetEnabled = true;
    host.Description.Behaviors.Find<ServiceDebugBehavior>().IncludeExceptionDetailInFaults = true;

    host.AddServiceEndpoint(
        new ServiceEndpoint(ContractDescription.GetContract(typeof(FooDataService)))
            {
                Name = "default",
                Address = new EndpointAddress(uri),
                Contract = ContractDescription.GetContract(typeof(IRequestHandler)),
                Binding = new WebHttpBinding()
            });

    return host;
}