3

Ich erstelle eine ASP.NET MVC-Anwendung. Ich muss Ausnahmen an zwei Stellen behandeln.ASP.NET MVC Error Logging in beiden Global.asax und Error.aspx

Global.asax.vb Datei:

Public Class MvcApplication 
    Inherits System.Web.HttpApplication 
    ... 
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
     LogException(HttpContext.Current.Server.GetLastError(), Request) 
    End Sub 
    Shared Sub LogException(ByVal ex As Exception, ByRef r As System.Web.HttpRequest) 
     ... 
    End Sub 
End Class 

Views \ Shared \ Error.aspx Datei:

<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage(Of System.Web.Mvc.HandleErrorInfo)" %> 
<script runat="server"> 
    Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs) 
     MvcApplication.LogException(Model.Exception, Request) 
    End Sub 
</script> 
... 

Aber ich bekomme diese Fehlermeldung:

C:\inetpub\example.com\Views\Shared\Error.aspx(5): error BC30451: Name 'MvcApplication' is not declared.

Wo soll ich Definieren Sie meine LogException() - Funktion so, dass auf sie von der Datei Global.asax.vb und der Error.aspx-Datei zugegriffen werden kann? Wo ist der MVC-ish?

+1

Sind diese Antworten richtig? Oder ist eine mehr korrekt als die andere? Wenn ja, kannst du es markieren? – SideFX

Antwort

2

Der MVC-isch Weg wäre, ActionFilters zu verwenden, um (Protokoll-) Ausnahmen zu behandeln.

Schauen Sie sich diese zum Beispiel:

Logging with ASP.NET MVC Action Filters

+1

+1 einer von mir jedoch, was ist, wenn ein Fehler in Ihrem Application_Start auftritt? Wir haben ziemlich viele Logs von Autofac und NHibernate, die in _start eingerichtet wurden. Wenn irgendetwas schief geht und einen Fehler auslöst, wird ein ActionFilter diesen Fehler nie finden. Vorsichtig! – Perhentian

+1

In diesem Beispiel scheint es um das Protokollieren von Aktionen zu gehen und nicht um das Protokollieren von Ausnahmen – codeulike

6

Möglicherweise möchten Sie ein Modul, um zu versuchen genannt ELMAH. Scott Hanselman sagt "ELMAH ist Tivo für Ihre ASP.NET-Fehler". Ich verwende es derzeit für die Protokollierung von Fehlern in meinen ASP .NET + MVC-Anwendungen und es funktioniert wie ein Zauber. Die Einrichtung war einfach, da nur Zeilen zur web.config hinzugefügt werden müssen. Sie können sogar einschränken, wer Zugriff auf die Fehlerprotokolle hat.

http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

1

Eigentlich für das, was ich Sie nur eine Richtlinie sammeln konnte fehlen:

<%@ Import Namespace="[Your default namespace]" %> 

Und es whould arbeiten wie beworben.