How do you setup HTTP and HTTPS WCF 4 RESTful services?

10,603

You should try to create two separate end-points. For example,

<system.serviceModel>
    <services>
       <service name="MyNameSpace.MyService">
           <endpoint address="https://www.example.com/MyService.svc"
                  binding="wsHttpBinding" bindingConfiguration="SecureWebBinding"
                  contract="MyNameSpace.IMyContract" />
           <endpoint address="http://www.example.com/MyService.svc"
                  binding="basicHttpBinding" 
                  contract="MyNameSpace.IMyContract" />
       </service>

       <bindings>
           <webHttpBinding >
              <binding name="SecureWebBinding" >
                 <security mode="Transport"></security>
              </binding>
           </webHttpBinding>
       </bindings>

    </services>
</system.serviceModel>
Share:
10,603
Kellen
Author by

Kellen

Updated on June 27, 2022

Comments

  • Kellen
    Kellen almost 2 years

    I'm trying to use WCF 4 to set up a RESTful web service. I'd like the service to be accessible both using HTTP and HTTPS. By default the service is created with the following configuration which works for http but not https:

    <system.serviceModel>
     <behaviors>
       <endpointBehaviors>
         <behavior>
           <webHttp helpEnabled="true" />
         </behavior>
       </endpointBehaviors>
     </behaviors>
     <protocolMapping>
       <add scheme="http" binding="webHttpBinding" />
     </protocolMapping>
    </system.serviceModel>
    

    I can then turn on HTTPS for the service by changing the configuration slightly to this:

    <system.serviceModel>
     <behaviors>
       <endpointBehaviors>
         <behavior>
           <webHttp helpEnabled="true" />
         </behavior>
       </endpointBehaviors>
     </behaviors>
     <bindings>
       <webHttpBinding >
         <binding name="SecureWebBinding" >
           <security mode="Transport"></security>
         </binding>
       </webHttpBinding>
     </bindings>
     <protocolMapping>
       <add scheme="http" binding="webHttpBinding"  bindingConfiguration="SecureWebBinding"/>
     </protocolMapping>
    </system.serviceModel>
    

    My question is how do I get the service working with both?