2016-07-15 14 views
0

Behandlung von Ausnahmen mit MVC + Postsharp. Das ist mein Projekt ArchitekturBehandlung von Ausnahmen in MVC mit Postsharp

MVC-Projekt - >>> Business Layer - >>> Datalayer

MVC-Projekt (Hinzugefügt benutzerdefinierte Filter in der globalen Datei und eine Basissteuerung erstellten Ausnahmen zu fangen.)

Business Layer (Middleware)

Datalayer (eine Verbindung zu Postgres-Datenbank-Server und holt Daten.)

Im DataLayer habe ich PostSharp hinzugefügt, um Ausnahmen von der Datenbankseite und protokolliert/E-Mail mit NLog zu behandeln. Jetzt von hier möchte ich MVC Exception-Pipeline zu zeigen, ordnungsgemäße Nachricht an Benutzer anzuzeigen, dass eine Ausnahme aufgetreten ist. Also verwende ich

Jetzt fange ich diese Ausnahme bei MVC OnException-Methode.

PROBLEM: Ich protokolliere und sende auch E-Mail bei Ausnahme bei MVC Exception-Methode sowie für alle Ausnahmen auf der MVC-Seite.

Jetzt ist das Problem, ich habe bereits angemeldet und gesendet E-Mail für die Ausnahme, die von Postsharp behandelt wurde und jetzt, wenn es bei MVC erreicht Exception-Handler wird das wieder tun.

Wie kann ich bei MVC wissen, dass die Ausnahme bereits protokolliert wurde. Kann ich am Postsharp-Ende alles machen wie einige Argumente in dem, was ich im MVC Exception-Handler überprüfen kann.

vorschlagen Bitte eine Lösung oder führen dieses Problem zu beheben

Antwort

1

warum Sie versuchen, die Ausnahmen in 2 Plätze zu behandeln. Wählen Sie entweder postsharp oder die globale MVC onException.

Alternativ könnten Sie die Ausnahme in eine neue Ausnahme umbrechen. Zum Beispiel in Postsharp könnte man sagen, so etwas wie dieses

MyAspect : OnMethodBoundaryAspect { 

    public override OnException (MethodExecutionArgs args) { 
     ///your code to handle the exception here 
     throw new HandledExceptin(args.Exception); 
    } 
} 
+0

der Grund dafür ist, Postsharp gibt uns ein besseres Ergebnis in Hinblick darauf, was ist der Name der Methode aufgerufen wird und was waren die Argumente übergeben. Da nun Ausnahme occuered hat Auf der DataAccess-Ebene und von Postsharp behandelt wollte ich einen Mechanismus, um den Benutzer über eine Ausnahme zu intimieren. –

+0

Gibt es einen Grund, warum die Wrapping-Ausnahme Ihren Anwendungsfall nicht löst? –