Pages

Thursday, August 22, 2013

WCF - Custom Binding to support SOAP1.2



WCF Service Binding determines how a Client or rather a Consumer of the WCF service is going to communicate with it. There are many bindings available. Mostly used ones are –

  1. WSHTTPBinding
  2. WebHTTPBinding
  3. Custom Binding

This post talks about Custom Binding and how it can be implemented to support SOAP 1.2 standards. Please note that WSHTTPBinding supports SOAP 1.2 by default. However, some firms find security-related issues with using this binding. The WS-Addressing functionality is enabled for this binding which cannot be changed.
Let us first look at the Web.config settings required to implement CustomBinding –

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <bindings>
      <customBinding>
          <binding name="UPAHubAccessWS12">
            <textMessageEncoding messageVersion="Soap12" />
            <httpsTransport requireClientCertificate="True" />
          </binding>
        </customBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="BehaviorName" name="ServiceName">
        <endpoint address=""  binding="customBinding" bindingConfiguration="BindingName" contract="ServiceInterfaceName" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name=" BehaviorName">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
</system.serviceModel>

Please make note of the following values specified in the above configuration –
- BehaviorName – Denotes the service behavior configuration to be used for the WCF service. Here, it allows HTTPS request (required for service hosted on HTTPS).

- ServiceName – Denotes the name of your WCF service

- BindingName – Denotes the name you give to your binding configuration

- ServiceInterfaceName – Denotes the name of the Interface class or the contract of your WCF service.


In one of my posts, I had created the client programmatically using C#, the above configuration settings correspond to the same code used but the initialization part is done at the Client’s end.



No comments:

Post a Comment