La WCF: La connexion de socket a été abandonnée
CommunicationException was unhandled by user code
The socket connection was aborted. This could be caused by an error processing your message
or a receive timeout being exceeded by the remote host, or an underlying network resource
issue. Local socket timeout was '02:48:04.9840000'.
J'ai testé cette application pendant des mois et ont juste vu cette erreur après avoir fait une petite modification à l'un des services. C'est seulement quelques secondes, donc je ne pense pas que c'est un problème de délai d'attente.
InnerException: Système.IO.IOException : L'opération de lecture a échoué, consultez intérieure exception
(Intérieure) InnerException: Système.Net.Les Sockets.Exception socketexception - Une connexion existante a dû être fermée par l'hôte distant.
Toutes les suggestions sont grandement appréciés!
Merci d'avance
Je vous suggère d'étudier pourquoi l'hôte distant fermer la connexion.
Eh bien, quand je debug à travers elle, tout semble bien, mais lors du retour du directeur de la procuration (le client), l'exception est levée. Je veux dire plus de données est à venir par le biais de ce qui est autorisé, mais pas plus que l'habitude est à venir à travers
Avez-vous essayé de la WCF de traçage?
Non, je n'ai pas essayé encore
Pouvez-vous recommander une bonne ressource pour cette Ladislav?
Eh bien, quand je debug à travers elle, tout semble bien, mais lors du retour du directeur de la procuration (le client), l'exception est levée. Je veux dire plus de données est à venir par le biais de ce qui est autorisé, mais pas plus que l'habitude est à venir à travers
Avez-vous essayé de la WCF de traçage?
Non, je n'ai pas essayé encore
Pouvez-vous recommander une bonne ressource pour cette Ladislav?
OriginalL'auteur Jesse Roper | 2010-10-21
Vous devez vous connecter pour publier un commentaire.
Vous êtes probablement en cours d'exécution dans le quota des questions telles que la MaxReceivedMessageSize, MaxArrayLength, MaxStringContentLength défini dans la liaison.
Vous pouvez également jeter un oeil à la MaxItemsInObjectGraph attribut disponible dans les comportements.
OriginalL'auteur Johann Blais
Généralement j'ai vu cette erreur lorsque la partie adverse n'a pas proprement de l'arrêt de la connexion. Si, côté client, vous avez une classe qui hérite de
ClientBase<T>
, alors vous devriez appelerClose
lorsque vous avez terminé avec le service (en faitClientBase<T>
implémenteIDisposable
de sorte que vous pouvez utiliser unusing
déclaration).Si vous utilisez un
ChannelFactory<T>
pour créer la connexion au service, le résultat est un proxy qui met en œuvre le contrat, mais met également en œuvreICommunicationObject
; vous devriez appelerClose
sur cette lorsque vous avez terminé.Sur le côté service, les choses ne sont pas les mêmes, la session (et donc le socket sous-jacente) est géré par le client. Si le service est de faire tomber le socket le plus probable c'est le résultat d'une erreur, auquel cas la Musique Mages de la suggestion est bonne. Microsoft parle de la façon d'aller sur ce ici.
Noter que pour obtenir une image claire de ce qui se passe, vous devrez peut-être configurer le suivi pour le client et le service. Afin de voir les traces que vous utiliseriez
SvcTraceViewer
qui devrait être dans laProgram Files\Microsoft SDKs\Windows\v6.0A\bin
ouProgram Files\Microsoft SDKs\Windows\v7.0A\bin
dossier. Si vous avez de la trace à la fois le client et le service, vous pouvez ouvrir les deux fichiers ensemble dansSvcTraceViewer
à l'aide de laFile /Add
menu.OriginalL'auteur Steve Ellinger
J'ai connu une connexion de socket abandonnée pour des raisons différentes, que je me sens vaut une réponse.
En plus de ne pas avoir assez haut les valeurs de votre MaxReceivedMessageSize, MaxArrayLength, MaxStringContentLength, MaxItemsInObjectGraph que Johann a souligné...
Assurez-vous que les types que vous êtes la sérialisation de jouer gentiment avec WCF. Par exemple, j'ai eu le même problème, mais alors réalisé que j'étais en envoyant
System.DBNull
sur le fil qui a causé le service pour l'abandonner. Une fois que j'ai filtré laDBNull
les objets, les choses ont commencé à travailler à nouveau.OriginalL'auteur C. Tewalt
Dans mon cas, il y a un enum ajouté à l'objet de la réponse, mais la procédure stockée utilisée pour remplir l'objet n'était pas de retourner de la valeur à partir de la base de données. Il était de retour à sa valeur par défaut (qui est zéro), ce qui n'est pas une valeur valide pour l'enum qui a été créé. À titre d'exemple :
Vous verrez que la valeur de l'enum est zéro, même si il n'y a pas de valeur d'énumération de zéro.
Si vous essayez de retourner la SomeResponse objet à partir d'une WCF appeler et il a cet état, vous obtenez le même message d'erreur comme indiqué dans la question.
OriginalL'auteur Tony
dans mon cas, j'étais de retour d'un Ruisseau avec l'aide de la clause sur le stream. Qui a fermé les cours d'eau avant il a été envoyé et a créé la connexion interrompu erreur.
OriginalL'auteur azpc