enable consume .net wcf ssl https endpoint

.net - consume - Agregar referencia de servicio WCF con punto final https



wcf service c# https (1)

Debe cambiar su enlace para usar la seguridad de transporte para usar HTTPS

Seguridad de transporte

El enlace del servidor debe estar configurado para https y para el cliente:

<bindings> <basicHttpBinding> <binding name="httpsBinding" allowCookies="true" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647"> <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="Transport"> <transport clientCredentialType="None" /> </security> </binding> </basicHttpBinding> </bindings> <services> <service name="yourNamespace.YourService" behaviorConfiguration="yourBehaviors"> <endpoint contract="yourNamespace.YourService" binding="basicHttpBinding" bindingConfiguration="httpsBinding" /> </service> </services>

Mi aplicación de servicio WCF funciona sobre http y https, sin embargo, cuando agrego una referencia de servicio (con la URL https) a ella en mi cliente, Visual Studio 2010 establece el punto final en el archivo de configuración en http. No parece ser tan simple como cambiar ese extremo de configuración a https ya que hay múltiples archivos detrás de escena haciendo cosas con los xsd y haciendo referencia al punto final http. ¿Cómo puedo configurar mi servicio / cliente para forzar https para que establezca correctamente el punto final?

Cuando trato de cambiar manualmente el punto final en el archivo de configuración y establecer el modo de seguridad en "Transporte" obtengo este error:

Mensaje de excepción: No se escuchaba ningún punto final en https://myservice/AvailabilityService.svc que pudiera aceptar el mensaje. Esto a menudo es causado por una dirección incorrecta o acción SOAP. Vea InnerException, si está presente, para más detalles.

Puedo, sin embargo, ver ese punto final en IE, y estoy depurando localmente. Después de agregar mi referencia de servicio con https y buscar en la solución su http equivolent, encuentra un archivo wsdl que hace referencia a http, a configuration.svcinfo y a configuration91.svcinfo que utiliza la url http en lugar de https

Aquí está mi configuración del lado del servidor:

<?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>

.. Y la configuración del lado del cliente:

<system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IAvailabilityService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="Transport"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="https://myservice/AvailabilityService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAvailabilityService" contract="PaymentAvailabilityService.IAvailabilityService" name="BasicHttpBinding_IAvailabilityService" /> </client> </system.serviceModel>

Tal vez sea mejor que consuma manualmente los servicios en el código?