Question

Je voudrais consommer un service de WCF tiers à l'aide de l'authentification de base, mais j'ai également besoin d'utiliser SNI.J'ai piraté ensemble l'exemple suivant (moins de choses de fin d'extrémité réelle) pour montrer ce que j'ai configuré et l'erreur que je reçois.

Toute aide beaucoup appréciée car je connais peu de WCF et de rien sur 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>

Code:

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

            service.method() // fails!

L'appel à méthode échoue avec:

Le service demandé, 'https://their.server.com/theirservice.svc' n'a pas pu être activé.Voir les journaux de trace de diagnostic du serveur pour plus d'informations.

la trace du serveur

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)
Était-ce utile?

La solution

Cette erreur est généralement une question de service de service et non un problème côté client.SNI est une technologie de serveur pour améliorer la prise de main SSL et dans la pile Microsoft est uniquement pris en charge dans la version non sélectionnée IIS 8 .À moins que la tierce partie ait roulé sa propre pile SNI / SSL, il semble peu probable que leur service de WCF l'exigeait.

sur l'exception réelle que vous obtenez, il semble que quelque chose sur les lignes de Ce blog post serait probablement la cause du problème.Vos extraits de configuration et de code sont à droite pour BasichttpLinding à l'aide de SSL et de l'authentification HTTP de base.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top