WCF- “La connexion sous-jacente a été fermée: La connexion a été fermée de manière inattendue”
Je suis à la réception de cette magnifique ambigu message d'erreur lorsque vous utilisez l'un de mes webmethods sur mon WCF webservice. En tant que message d'erreur n'est pas de fournir quelque explication que ce soit, permettez-moi de poster ma théorie.
Je crois qu'il peut avoir quelque chose à voir avec le type de retour, je suis en utilisant
J'ai un Types DLL qui est refrenced à la fois le service et le client. Dans cette DLL est la classe de base ExceptionMessages. Il est un enfant de cette classe appelée DrawingExcepions.
Voici un code:
public class ExceptionMessages
{
public object[] ReturnValue { get; set; }
}
public class DrawingExceptions : ExceptionMessages
{
private List<DrawingException> des = new List<DrawingException>();
}
public class DrawingException
{
public Exception ExceptionMsg { get; set; }
public List<object> Errors { get; set; }
}
L'aide de code:
[OperationContract]
ExceptionMessages createNewBom(Bom bom, DrawingFiles dfs);
public ExceptionMessages createNewBOM(Bom bom, DrawingFiles dfs)
{
return insertAssembly(bom, dfs);
}
public DrawingExceptions insertAssembly(Bom bom, DrawingFiles dfs)
{
DrawingExceptions des = new DrawingExceptions();
foreach (DrawingFile d in dfs.drawingFiles)
{
DrawingException temp = insertNewDrawing(bom, d);
if (temp != null)
des.addDrawingException(temp);
if (d.Child != null)
des.addDrawingException(insertAssembly(bom, d.Child));
}
return des;
}
Revient à:
ExceptionMessages ems = client.createNewBom(bom, currentDFS);
if (ems is DrawingExceptions) { }
Fondamentalement le type de retour de la webmethod est ExceptionMessages cependant j'avais l'habitude d'être l'envoi de la classe enfant dos à la place.
Ma seule idée est que c'est l'enfant qui est à l'origine de l'erreur, mais comme je l'ai lu, cela ne devrait pas avoir d'effet. Quiconque a des idées de ce qui pourrait mal se passer ici?
Si d'info plus est nécessaire, il suffit de demander 🙂
Grâce.
OriginalL'auteur SumGuy | 2010-05-21
Vous devez vous connecter pour publier un commentaire.
Oui, ce message est excellent 🙂
J'ai souvent constaté qu'il est utile pour activer le traçage, comme décrit dans cet article. Jetez un oeil à la section "Paramètres Recommandés pour le Déploiement ou de Débogage'.
OriginalL'auteur Eric Eijkelenboom
J'ai été faire cette erreur lors du retour d'une charge utile importante, il s'est avéré être le DataContractSerialiser s'arrêtant à mi-chemin comme il avait frappé par défaut maxItemsInObjectGraph paramètre, l'ajout de la folloing de mon point de terminaison de comportements résolu le problème.
OriginalL'auteur squig
J'ai eu le même problème et je suis tombé sur ce post comme une solution possible à une erreur de dépassement de délai que mon service WCF a été d'avoir. Dans mon cas squig de réponse offert un indice quant à l'affection sous-jacente. Alors qu'il est facile de la taille de la charge utile maximale, qui est évidemment une option avec des implications sur les performances.
Dans mon cas, j'upload un objet graphique pour être sauvés, que le renvoi de l'objet mise à jour de mon client afin que je puisse garder une trace de clés étrangères, etc. Pour mon problème, la question était de savoir comment pourrait-il en être arrivés beaucoup plus sur le voyage de retour. J'ai creusé autour et il m'a frappé que la cause de l'élargissement de la taille de la charge utile est que quand j'ai ajouté un objet enfant à mon objet graphique, la navigation, les propriétés de ces objets enfants ajouté les références à la mère, qui avait des références à l'enfant, et ainsi de suite et ainsi de suite.
Je suis allé à mon fichier edmx, supprimé les propriétés de navigation à partir de la délinquance des objets enfants et ma taille de paquet est apprivoisée.
Espère que cela aide quelqu'un d'autre!
OriginalL'auteur James Fleming
J'ai juste eu le même problème cependant aucune des réponses ci-dessus ont résolu le problème.
Je ramenais une Liste de LINQ objets, la base de données a toutes les relations configurer correctement ce qui permet aux objets d'être automatiquement lié avec LINQ... Ce fut l'arrêt de la requête de travail.
J'ai résolu ce problème en supprimant les relations de l'LINQ DBML
OriginalL'auteur NathofGod