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>
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.
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!
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
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 .
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" ....... />
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.