Comment obtenir le bloc d'application de gestion des exceptions (EHAB) pour écrire les valeurs de la propriété Exception.Data dans le journal?Exception.Data info est manquante dans le journal EntLib
try
{
// ...
}
catch (Exception ex)
{
ex.Data.Add("Hello", "World");
throw ex;
}
L'exception est enregistré correctement, mais je ne peux pas trouver les données ajoutées partout dans l'entrée du journal créé par EHAB. Pour autant que je sache, il est recommandé d'ajouter des informations pertinentes à l'exception elle-même, comme dans l'exemple ci-dessus. C'est pourquoi je suis un peu surpris qu'EHAB ne l'inclue pas par défaut. Puis-je résoudre ce problème en modifiant le modèle avec l'Éditeur de modèles EntLib Text Formatter (capture d'écran ci-dessous)? Je ne trouve aucune information sur les différents "jetons" fournis, mais je suppose que la réponse est cachée quelque part avec eux.
Text Formatter Template Editor http://img195.imageshack.us/img195/6614/capturegmg.png
Ou dois-je vraiment besoin de mettre en œuvre ma propre Formatter de texte personnalisé pour y parvenir?
EDIT/MISE À JOUR:
Je le fais dans mes Global.asax.cs afin d'éviter d'avoir à ajouter l'appel de méthode HandleException partout dans mon code:
using EntLib = Microsoft.Practices.EnterpriseLibrary;
using System;
namespace MyApp
{
public class Global : System.Web.HttpApplication
{
protected void Application_Error(object sender, EventArgs e)
{
// I have an "All Exceptions" policy in place...
EntLib.ExceptionHandling.ExceptionPolicy.HandleException(Server.GetLastError(), "All Exceptions");
// I believe it's the GetLastError that's somehow returning a "lessor" exception
}
}
}
Il se trouve c'est pas le même que celui (qui fonctionne très bien, et résout essentiellement mon problème):
try
{
// ...
}
catch (Exception ex)
{
ex.Data.Add("Hello", "World");
bool rethrow = ExceptionPolicy.HandleException(ex, "Log Only Policy");
throw ex;
}
Passer en revue tout le code et ajouter des try-catch avec un appel HandleException semble juste ... bien, stupide. Je suppose que mon problème est vraiment comment utiliser correctement EHAB, pas de configuration.
Une suggestion sur la façon dont je peux correctement enregistrer toutes les exceptions sur un «niveau global» dans une application Web ASP.NET?
Je suis d'accord avec HandleException: en tant que framework, la construction "if rethrow" n'offre pas vraiment beaucoup d'abstraction; vous avez toujours besoin de pepper votre code avec le code "if rethrow" dans chaque bloc catch. –