2010-09-06 7 views
2

J'ai une simple application serveur client qui utilise WCF (netTcpBinding) lorsque je lance le serveur et envoie des messages via le client tout fonctionne correctement, mais lorsque je ferme le serveur manuellement et ouvert Encore une fois (sans fermer l'application client du tout) la prochaine fois que le client essaie d'envoyer un message au serveur je reçois cette exception (côté client):La connexion par socket a été annulée - WCF

La connexion socket a été annulée. Cela peut être dû à une erreur de traitement de notre message ou à un dépassement de délai de réception de l'hôte distant ou à un problème de ressource réseau sous-jacent . Le délai d'attente du socket local était de '00: 00: 59.9843903'. Si j'utilise basicHttpBinding, le problème ne se produira pas.

est quelqu'un sait pourquoi ce problème se produit ??? Merci, Liran

Répondre

5

Ce comportement est attendu. Lorsque vous fermez le serveur, la connexion TCP sur le serveur est fermée et vous ne pouvez plus l'appeler depuis le client. Redémarrer le serveur n'aidera pas. Vous devez attraper l'exception sur le client, Abandonner le proxy actuel et créer et en ouvrir un nouveau. Avec BasicHttpBinding, cela fonctionne parce que NetTcpBinding utilise un seul canal pour toute la vie du proxy (le cannel est lié à la connexion TCP) alors que BasicHttpBinding en crée un nouveau pour chaque appel (il réutilise la connexion HTTP existante ou en crée une nouvelle). t existe).

Questions connexes