7

Ich habe nach einigen Ansätzen für die Verwendung von ELMaH mit ASP.Net MVC gesucht, so dass ich die benutzerdefinierte Fehlerseite für alle Ausnahmen einschließlich 404s verwenden kann.Ist dieser Ansatz für die Verwendung von ELMaH mit MVC Geruch?

Es gibt no shortage von questionsasking wie die /Shared/Error.aspx bekommen richtig in ASP.Net MVC arbeiten - entweder mit oder ohne ELMAH. Ich hatte kein Problem mit dieser Aufgabe, aber ich habe das Gefühl, dass meine Lösung für die Verwendung einer benutzerdefinierten 404-Seite neben ELMaH zu einfach ist und ich kann das Gefühl nicht loswerden, dass es mehr geben sollte.

Nach custom in Web.Config ermöglichen, habe ich eine neue Aktion in meinem Homecontroller:

public ActionResult PageNotFound() 
{ 
    return null; 
} 

Von dort habe ich eine neue Methode in meiner Datei Global.asax Vorteil ELMAH die Protokollfilterfunktionen zu übernehmen hinzugefügt und , nachdem die Ausnahme protokolliert werden zu lassen, die Antwort zurück an die oben genannten PageNotFound Action Umleitung:

public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e) 
    { 
     if (e.Exception.GetType().Equals(typeof(HttpException))) 
     { 
      HttpException ex = (HttpException)e.Exception; 
      if (ex.GetHttpCode() == 404) 
       Response.Redirect("/Home/PageNotFound"); 
     } 
    } 

Ist ich etwas mit Blick auf, die standardmäßig mit MVC kommt (weil ich noch meine Art und Weise für eine Vielzahl von t zu finden, Fragen bezüglich MVC) oder das Problem zu überdenken, wo eine einfachere Lösung existiert? Schätzen Sie jede Eingabe.

+0

Es gibt keine tatsächliche Ansicht zurückzukehren. Ich lasse den Benutzer einfach zur Standardseite /Shared/Error.aspx wechseln. –

Antwort

2

Ich bin sicher, dass ASP.NET diese Art von Sachen für Sie erledigen kann, Sie müssen nicht unbedingt etwas aufrufen, um auf Ihre 404 Action in Ihrem global.asax umzuleiten. Siehe unten für ein Beispiel.

<configuration> 
    <system.web> 
     <customErrors mode="On"> 
      <error statusCode="404" redirect="/servererrors/404.aspx" /> 
     </customErrors> 
    </system.web> 
</configuration> 

http://www.xefteri.com/articles/show.cfm?id=11

+1

Ok. Der Artikel, mit dem Sie verlinkt haben, wurde 2002 (!) Für eine Zielgruppe von .Net 1.1-Webformular-Entwicklern geschrieben. Ihre Antwort hat mich jedoch dazu gebracht, meine Herangehensweise erneut zu betrachten und, wie ich vermutet habe, habe ich die Dinge übersteuert. Ich brauche das errorLog_Filtering-Ereignis in Global.asax nicht, aber ich * brauche * ein erreichbares ActionResult. Danke für die Eingabe. –

+0

Sorry, der Artikel ist ziemlich alt, aber die Konfiguration Aspekt ist immer noch ziemlich relevant. Wenig hat sich geändert, wenn es um asp.net-Konfigurationen geht. –