Pregunta

Me gustaría consumir un servicio WCF de terceros utilizando la autenticación básica, pero también necesito usar SNI.He pirateado el siguiente ejemplo (Minus Minus ToinPoint Stuff) para mostrar lo que he configurado y el error que recibo.

Cualquier ayuda apreciada mucho como sé poco sobre WCF y nada sobre SNI.

config

<endpoint 
 address="https://their.server.com/theirservice.svc"
 binding="basicHttpBinding"  
  bindingConfiguration="BasicHttpBinding_ISyncFramework2"
  contract="ISyncFramework" name="BasicHttpBinding_ISyncFramework2">
 </endpoint>

       <basicHttpBinding>
         <binding name="BasicHttpBinding_ISyncFramework2" 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="Basic" proxyCredentialType="None"
                 realm="" />
           </security>
         </binding>
       </basicHttpBinding>

Código:

            var service = new SyncFrameworkClient();
            service.ClientCredentials.UserName.UserName = "username";
            service.ClientCredentials.UserName.Password = "thepassword";

            service.method() // fails!

La llamada a Método falla con:

El servicio solicitado, 'https://their.server.com/theirservice.svc' no se pudo activar.Consulte los registros de seguimiento de diagnóstico del servidor para obtener más información.

La traza del servidor

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
¿Fue útil?

Solución

Ese error suele ser un problema del lado de servicio, no un problema del lado del cliente.SNI es una tecnología de servidor para mejorar la exportación SSL y en la pila de Microsoft es solo admitido en la versión IIS 8 inédita.A menos que el tercero enrollado su propia pila SNI / SSL, parece poco probable que su servicio WCF lo requiera.

En la excepción real que está recibiendo, parece que algo en la línea de este post de blog podría ser la causa del problema.Sus fragmentos de configuración y código se ven a la derecha para basichttpbinding utilizando la autenticación HTTP SSL y básica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top