Zum Inhalt

TIL – Reihenfolge von ASP.NET MVC Exception Filtern

Als ich Gestern ein wenig mit Exception Filtern 1 experimentiert habe und ich hierbei zwei Filter für eine Methode gesetzt habe, ist mir aufgefallen, dass die Reihenfolge in der die Filter aktiviert wurden, nicht der entsprach, die ich erwartet habe. Als ich dann zusätzlich auch noch dem Filter Attribut die Order-Eigenschaft mitgegeben habe, war die Reihenfolge dann immer noch nicht wie erwartet.

Konkret sah das einfache Beispiel wie folgt aus.

[ExceptionLoggingFilter1(Order = 1)]
[ExceptionLoggingFilter2(Order = 2)]
public ActionResult Demo3()
{
    var value = int.Parse("test");
    return View("Index");
}

Erwartet habe ich, dass zunächst ExceptionLoggingFilter1 und dann ExceptionLoggingFilter2 abgearbeitet wird. Allerdings war es genau anders herum. Eine kurze Recherche brachte mich dann zu 2 und der Erkenntnis, dass OnActionExecuted, OnResultExecuting und OnException in umgekehrter Reihenfolge ausgeführt werden.

Will man also, wie ich es ursprünglich vor hatte, erst ExceptionLoggingFilter1 und dann ExceptionLoggingFilter2 abgearbeitet haben, muss der Code wie folgt aussehen.

[ExceptionLoggingFilter1(Order = 2)]
[ExceptionLoggingFilter2(Order = 1)]
public ActionResult Demo3()
{
    var value = int.Parse("test");
    return View("Index");
}

Einen wirklichen Sinn kann ich darin nicht erkennen, aber in diesem Fall ist die Hauptsache, dass man weiß, dass es so ist und entsprechend berücksichtigen kann.

Published in.NET

Kommentare sind geschlossen.