Je vous écris client WCF pour writtern de service en Java par l'un des partenaires. Je reçois une exception quand je fais le premier appel de service à leur service. Mais la demande subséquente n'a émis aucune exception. J'utilise une application console pour tester cela. Pourquoi est-ce échouer la première fois pas d'autres fois?Erreur lors de premier service WCF appel
Voici le code que je fais appel au service plusieurs fois
for (int i = 0; i < 3; i++)
{
ServiceClientTest();
}
Voici le code de liaison
TransportBindingElement transportElement = null;
transportElement = new HttpsTransportBindingElement();
((HttpsTransportBindingElement)transportElement).AuthenticationScheme = AuthenticationSchemes.Basic;
var messegeElement = new TextMessageEncodingBindingElement
{
MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap11, AddressingVersion.None),
ReaderQuotas =
{
MaxArrayLength = 200000,
MaxBytesPerRead = 200000,
MaxDepth = 200000,
MaxNameTableCharCount = 200000,
MaxStringContentLength = 200000
}
};
var binding = new CustomBinding(messegeElement, transportElement);
return binding;
Voici les détails d'exception de la première demande
Impossible de marquer CompanyXYZ ServiceCompany System.ServiceModel.CommunicationException: Une erreur est survenue lors de la réception de la réponse HTTP à https://test.intelligentcusomer.ServiceCompany.com/XYZCompanyAdapter/1.0. Cela peut être dû à la liaison de point de terminaison de service n'utilisant pas le protocole HTTP. Cela peut également être dû à l'abandon d'un contexte de requête HTTP par le serveur (probablement en raison de l'arrêt du service). Voir les journaux du serveur pour plus de détails. ---> System.Net.WebException: La connexion sous-jacente a été fermée: Une erreur inattendue s'est produite sur une réception. ---> System.IO.IOException: Impossible de lire les données de la connexion de transport: Une connexion établie a été annulée par le logiciel de votre machine hôte. ---> System.Net.Sockets.SocketException: une connexion établie a été abandonnée par le logiciel dans la machine hôte à System.Net.Sockets.NetworkStream.Read (tampon byte [], Int32 offset, taille Int32) - - Fin de la trace de la pile d'exception interne --- at System.Net.ConnectStream.Read (tampon Byte [], décalage Int32, taille Int32) at System.Net.HttpWebRequest.MakeMemoryStream (flux de flux) --- Fin de trace de pile d'exception interne --- at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout) --- Fin de la trace de pile d'exception interne ---
trace de pile du serveur: à System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException WebException, HttpWebRequest demande, HttpAbortReason abortReason) à System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout) à System.ServiceModel .Channels.RequestChannel.Request (Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.RequestChannelBinder.Request (Message, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call (Action de chaîne, Boolean oneway, ProxyOperationRuntime fonctionnement, Object [] ins, objet [] out, temporisation TimeSpan) à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, opération ProxyOperationRuntime) à System.ServiceModel.Channels.ServiceChannelProxy.Invoke (message IMessage)
Exception relancée à [0]: à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) au système. Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & MSGDATA, le type Int32) à MyCompany.Services.Clients.ServiceCompany.XYZCompanyAdapter.process (demande processRequest) à MyCompany.Services.Clients.ServiceCompany.XYZCompanyAdapterClient.MyCompany.Services. Clients.ServiceCompany.XYZCompanyAdapter.process (requête processRequest) dans C: \ Projects \ MyCompany \ MyCompany.Distribution \ CustomDeliveryProcessor \ Clients \ XYZCompanyServiceClient.cs: ligne 1122 à mon Company.Services.Clients.ServiceCompany.XYZCompanyAdapterClient.processus (process process1) dans C: \ Projects \ MyCompany \ MyCompany.Distribution \ CustomDeliveryProcessor \ Clients \ XYZCompanyServiceClient.cs: ligne 1129 à CustomDeliveryProcessor.CusomerDelivery.CompanyTestTest() dans C: \ Projects \ MyCompany \ MyCompany.Distribution \ CustomDeliveryProcessor \ CusomerDelivery.cs: ligne 131
Est-ce que cela se produit pour le premier appel pour chaque machine client? Ou juste le premier appel depuis le redémarrage du serveur web? Peut-être que la connexion client expire parce que le serveur Web n'a pas encore démarré le service Web. –