70 votes

Définir IncludeExceptionDetailInFaults à true dans le code pour WCF

Comment puis-je définir IncludeExceptionDetailInFaults dans le code sans utiliser App.Config ?

105voto

marc_s Points 321990

Oui, bien sûr - du côté du serveur, avant d'ouvrir l'hôte de service. Cela nécessiterait cependant que vous hébergez vous-même le service WCF - cela ne fonctionnera pas dans les scénarios d'hébergement IIS :

ServiceHost host = new ServiceHost(typeof(MyWCFService));

ServiceDebugBehavior debug = host.Description.Behaviors.Find<ServiceDebugBehavior>();

// if not found - add behavior with setting turned on 
if (debug == null)
{
    host.Description.Behaviors.Add(
         new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
}
else
{  
    // make sure setting is turned ON
    if (!debug.IncludeExceptionDetailInFaults)
    {
        debug.IncludeExceptionDetailInFaults = true;
    }
}

host.Open();

Si vous avez besoin de faire la même chose dans l'hébergement IIS, vous devrez créer votre propre fichier personnalisé. MyServiceHost et un descendant approprié MyServiceHostFactory qui instancie un tel hôte de service personnalisé, et faites référence à cette usine d'hôtes de service personnalisés dans votre fichier *.svc.

34voto

LievenV Points 41

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

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

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