2011-11-09 10 views
6

Estoy tratando de usar WCF 4 para configurar un servicio web RESTful. Me gustaría que el servicio sea accesible tanto con HTTP como con HTTPS. Por defecto, el servicio se crea con la siguiente configuración que funciona para HTTP pero no https:¿Cómo se configuran los servicios RESTful HTTP y HTTPS WCF 4?

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

que puede entonces activar HTTPS para el servicio cambiando la configuración ligeramente a esto:

<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> 

Mi La pregunta es ¿cómo consigo que el servicio funcione con ambos?

Respuesta

6

Debería tratar de crear dos puntos finales separados. Por ejemplo,

<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> 
+1

Supongo que debe ser ** https **: //ww.xyz.com/MyService.svc para el punto final definido primero en su ejemplo. –

Cuestiones relacionadas