Frage

Ich habe für einige Ansätze gesucht, um mit ASP.Net MVC zu verwenden ELMAH so, dass ich die benutzerdefinierte Fehlerseite für alle Ausnahmen einschließlich 404s verwenden kann.

Es keinen Mangel von Fragen fragen , wie die /Shared/Error.aspx richtig funktioniert erhalten in ASP.Net MVC - entweder mit oder ohne ELMAH. Ich habe kein Problem mit dieser Aufgabe hatte, aber ich fühle mich, als ob meine Lösung einer benutzerdefinierten 404-Seite neben ELMAH zur Verwendung von zu einfach war, und ich kann das Gefühl nicht los, dass es mehr sein.

Nach der Aktivierung von custom in Web.Config, Ich habe 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 und nach lassen die Ausnahme protokolliert werden, die Antwort Umleitung zurück auf die oben genannten PageNotFound Action:

    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");
        }
    }

Bin ich mit Blick auf etwas, das standardmäßig mit MVC kommt (weil ich noch meine Art und Weise für eine Menge Dinge in Bezug auf MVC zu finden) oder Grübeln das Problem, bei dem eine einfachere Lösung gibt? Schätzen Sie jede Eingabe.

War es hilfreich?

Lösung

Ich bin sicher, dass ASP.NET solche Sachen für Sie behandeln können, müssen Sie etwas nicht unbedingt nennen zu Ihrem 404 Aktion in Ihrem global.asax zu umleiten. Im folgenden sehen Sie 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top