web-dev-qa-db-fra.com

Erreur WCF - Aucun point d'extrémité n'écoutait à

Je développe un service WCF, exécutant IIS6 sur Windows Server 2003. J'ai créé un client test pour communiquer avec le service WCF et le message d'erreur ci-dessous s'affiche. Cela fait des jours que je regarde cette erreur et suis passé en revue les suggestions des gens sur les forums, mais sans succès. Toute aide serait appréciée, merci beaucoup

Il n'y avait pas de point final d'écoute à https://webbooking.infodata.uk.com/Synxis/Synxis.svc qui pourrait accepter le message. Cela est souvent causé par une adresse incorrecte ou SOAP action. Voir InnerException, si présent, pour plus de détails.

System.Net.WebException: The remote server returned an error: (404) Not Found.
  at System.Net.HttpWebRequest.GetResponse()
  at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
   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.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(iMessage message)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(iMessage reqMsg, iMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at IOta2010A.ReservationSynch_SubmitRequest(ReservationSynchRequest request)
   at Ota2010AClient.IOta2010A.ReservationSynch_SubmitRequest(ReservationSynchRequest request) in c:\Development\WorkingFolder\Webservices\SynxisNew\App_Code\OTA2010A.cs:line 57589
   at Ota2010AClient.ReservationSynch_SubmitRequest(Security Security, DateTime& TimeStamp, String CorrelationID, String RelatesToCorrelationID, ReplyTo ReplyTo, OTA_HotelResNotifRQ OTA_HotelResNotifRQ) in c:\Development\WorkingFolder\Webservices\SynxisNew\App_Code\OTA2010A.cs:line 57601
   at Update.Page_Load(Object sender, EventArgs e) in c:\Development\WorkingFolder\Webservices\SynxisNew\Update.aspx.cs:line 72

Configuration client

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true"/>
  </system.web>
  <system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="ota2010AEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00"
                receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
                transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                        establishSecurityContext="true" />
                </security>
            </binding>
        </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://webbooking.infodata.uk.com/synxis/synxis.svc"
                binding="wsHttpBinding" bindingConfiguration="ota2010AEndpoint"
                contract="IOta2010A" name="ota2010AEndpoint" />
        </client>
    </system.serviceModel>
</configuration>

Config de service

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add Assembly="Pervasive.Data.SqlClient, Version=2.10.0.34, Culture=neutral, PublicKeyToken=C84CD5C63851E072"/>
      </assemblies>
    </compilation>
    <authentication mode="Windows"/>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> 
  </system.web>
  <system.serviceModel>
    <services>
      <service name="Synxis" behaviorConfiguration="SynxisWCF">
        <endpoint address="" name="wsHttpEndpoint"  binding="wsHttpBinding" contract="Synxis" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <diagnostics>
      <messageLogging logEntireMessage="true" logMalformedMessages="true"
         logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true"
         maxMessagesToLog="300" />
    </diagnostics>
    <behaviors>
      <serviceBehaviors>
        <behavior name="SynxisWCF" >
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" externalMetadataLocation="https://webbooking.infodata.uk.com/synxis/Synxis.svc.wsdl" />
            <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
29
Neil Hung

Vous ne définissez pas de liaison dans la configuration de votre service, vous obtenez donc les valeurs par défaut de wsHttpBinding et la valeur par défaut de securityMode\transport pour cette liaison est Message.

Essayez de copier votre configuration de liaison de la configuration du client vers votre configuration de service et attribuez cette liaison au point de terminaison via l'attribut bindingConfiguration:

<bindings>
  <wsHttpBinding>
    <binding name="ota2010AEndpoint" 
             .......>
      <readerQuotas maxDepth="32" ... />
        <reliableSession ordered="true" .... />
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None"
                       realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                     establishSecurityContext="true" />
          </security>
    </binding>
  </wsHttpBinding>
</bindings>    

(Parties coupées de la config pour gagner de la place dans la réponse).

<service name="Synxis" behaviorConfiguration="SynxisWCF">
    <endpoint address="" name="wsHttpEndpoint" 
              binding="wsHttpBinding" 
              bindingConfiguration="ota2010AEndpoint"
              contract="Synxis" />

Cela affectera ensuite votre liaison définie (avec la sécurité du transport) au noeud final.

14
Tim

J'ai eu le même problème. Pour moi, j'ai remarqué que le https utilise un autre certificat invalide en termes de date d'expiration. Je ne sais pas pourquoi c'est arrivé. J'ai changé le numéro de port Https et un nouveau certificat auto-signé. WCFtestClinet pourrait se connecter au serveur via HTTPS!

2
patricgh

dans mon cas 

mon service a pour fonction Upload Files

et cette erreur vient d'apparaître en essayant de télécharger Big Files

donc j'ai trouvé cette réponse Augmenter maxRequestLength à la valeur requise dans web.config 

et problème résolu

si vous ne faites aucune opération de téléchargement ou de téléchargement, cette réponse ne vous aidera peut-être pas

1
Basheer AL-MOMANI

Différent cas mais peut aider quelqu'un, 

Dans mon cas, le pare-feu Windows était activé sur le serveur, 

Deux réflexions peuvent être faites, 

1) Désactiver le pare-feu Windows (votre risque, mais cela fonctionnera)

2) Ajouter un port dans la règle entrante. 

Merci .

1
Usman Younas

Vous pouvez résoudre le problème en effaçant la valeur de l'adresse dans la balise de noeud final dans web.config:

<endpoint address="" name="wsHttpEndpoint"  .......           />
0
aseman arabsorkhi

J'obtenais la même erreur avec un accès au service. Cela fonctionnait dans le navigateur, mais ne fonctionnait pas lorsque j'essayais d'y accéder dans mon application asp.net/c#. J'ai changé le pool d'applications d'appPoolIdentity à NetworkService et cela a commencé à fonctionner. Cela ressemble à un problème de permission pour moi.

0
Atta H.