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 :

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();
        }
    }
}
Et ça passe bien dans la méthode OnException quand on tombe sur une erreur non prévu.

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 :

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();
        }
    }
}
Si je me met en mode débug avec un point d'arrêt dans la méthode "OnException", ça ne rentre jamais dedans...
Des idées du pourquoi ?