156 votes

Activer IncludeExceptionDetailInFaults (soit à partir de ServiceBehaviorAttribute, soit à partir du comportement de configuration <serviceDebug>) sur le serveur

J'ai un service WCF qui fonctionnait parfaitement, et quelque chose a changé et je ne sais pas quoi.

Je reçois cette exception:

System.ServiceModel.FaultException: Le serveur n'a pas pu traiter la demande en raison d'une erreur interne. Pour plus d'informations sur l'erreur, activez IncludeExceptionDetailInFaults (soit via l'attribut ServiceBehaviorAttribute, soit via le comportement de configuration) sur le serveur afin d'envoyer les informations sur l'exception au client, ou activez la trace selon la documentation Microsoft .NET Framework 3.0 SDK et inspectez les journaux de trace du serveur.

C'est déroutant car j'utilise .NET 4.0.

Où puis-je activer IncludeExceptionDetailInFaults? J'ai du mal à le trouver.

259voto

Otiel Points 6224

Définissez un comportement dans votre fichier .config:

    ...

Appliquez ensuite le comportement à votre service de cette manière:

    ...

Vous pouvez également le définir de manière programmatique. Consultez cette question.

62voto

rich.okelly Points 24144

C'est dans le fichier app.config.

45voto

Yang Zhang Points 132

Si vous voulez faire cela par code, vous pouvez ajouter le comportement comme ceci :

serviceHost.Description.Behaviors.Remove(
    typeof(ServiceDebugBehavior));
serviceHost.Description.Behaviors.Add(
    new ServiceDebugBehavior { IncludeExceptionDetailInFaults = true });

27voto

LievenV Points 41

Vous pouvez également le définir dans la balise [ServiceBehavior] au-dessus de la déclaration de votre classe qui hérite de l'interface

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyClass:IMyService
{
...
}

Immortal Blue a raison de ne pas divulguer les détails de l'exception dans une version publiquement disponible, mais dans un but de test, c'est un outil pratique. Assurez-vous toujours de le désactiver avant de le publier.

18voto

gagogra Points 171

Et n'oubliez pas d'ajouter le behaviorConfiguration à votre service après cela:

pour la solution d'Otiel

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