2 votes

Les connexions WCF sont interrompues de manière incorrecte / la connexion existante a été fermée de force par l'hôte distant.

J'ai une application Windows qui utilise un service WCF. Elle comporte quelques appels de service WCF, et ClientBase.Close() est toujours appelée après. Lorsque je ferme l'application, je n'obtiens aucune erreur dans VS2010. J'ai activé toutes les exceptions dans le débogueur et attaché mon compilateur à tout ce que je pouvais. Je ferme toutes les connexions, et aucun appel de service WCF ne s'exécute de manière asynchrone lorsque je ferme mon application.

Mais je reçois une exception sur le service WCF !

La connexion de la socket a été interrompue. Cela peut être dû à une erreur de traitement de votre message, à un dépassement du délai de réception par l'hôte distant ou à un problème de ressources réseau sous-jacent. Le délai d'attente de la socket locale était de (un grand nombre ici).

Le code d'erreur est 10054

Et l'exception intérieure est :

Une connexion existante a été fermée de force par l'hôte distant.

Mais comment cela peut-il arriver à mon code ?

Que puis-je faire pour trouver la raison de ce comportement erroné ?

1voto

Damith Points 32311

Augmenter le ChannelInitializationTimeout

Temps maximum d'attente pour qu'une connexion envoie le préambule pendant le lecture initiale. Ces données sont reçues avant que l'authentification ne se produise.

La valeur par défaut est de 5 secondes. Il s'agit de l'exception "Une connexion existante a été fermée de force par l'hôte distant".

1voto

Rich Points 1650

Activez le traçage WCF sur le serveur, regardez les résultats avec WCF trace viewer, assurez-vous que le pool d'applications a les droits au répertoire avec le service ...

<system.diagnostics>
<sources>
  <source name="System.ServiceModel" 
          switchValue="Verbose" 
          propagateActivity="true">
    <listeners>
      <add name="traceListener" 
           type="System.Diagnostics.XmlWriterTraceListener" 
           initializeData="Events.evt"  />
    </listeners>
  </source>
</sources>
<trace autoflush="true"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X