Bonsoir,
J'ai dût, récemment, mettre en place un système de logging pour des softs .net.
J'ai découvert dans la foulée la class HandleErrorAttribute que je me suis empressé d'étendre grosso modo ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class MonHandleErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { ... // récupération de la stack et mise en forme monlog(message); } }
Jusqu'à là, pas de grande difficulté, je décore mes controlleurs ainsi :
Et ça passe bien dans la méthode OnException quand on tombe sur une erreur non prévu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 namespace blabla.Controllers { [MonHandleErrorAttribute] public class ExempleController { public ActionResult Index() { int? a = null; int b = (int)a; return View(); } } }
J'aurais souhaité poussé un peu plus la chose en me créant des tests fonctionnels d'exemples.
Seulement voilà, ceci ne fonctionne pas du tout avec ce code :
Si je me met en mode débug avec un point d'arrêt dans la méthode "OnException", ça ne rentre jamais dedans...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 namespace blabla.TestsUnitaires { [TestClass] public class UnitTestLog { [TestMethod] public void TestLogController() { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = @"App.config"; Configuration config = ConfigurationManager.OpenMappedExeConfiguration( fileMap, ConfigurationUserLevel.None ); var sectionGroup = config.GetSection("system.web/customErrors") as CustomErrorsSection; ExempleController c = new ExempleController(); c.Index(); } } }
Des idées du pourquoi ?
Partager