Domanda

Ho cercato in giro per alcuni approcci per utilizzare ELMAH con ASP.Net MVC in modo che possa utilizzare la pagina di errore personalizzata per tutte le eccezioni, tra cui 404s.

Non c'è non mancano di domande chiedendo come ottenere il /Shared/Error.aspx funziona correttamente in ASP.Net MVC - con o senza ELMAH. Non ho avuto un problema con questo compito, ma mi sento come se la mia soluzione a utilizzare una pagina 404 personalizzata accanto ELMAH era troppo semplice e non riesco a scuotere la sensazione che non ci dovrebbe essere più ad esso.

Dopo aver abilitato customErrors nel web.config, ho creato una nuova azione nel mio HomeController:

public ActionResult PageNotFound()
{
    return null;
}

Da lì ho aggiunto un nuovo metodo nel mio file Global.asax per sfruttare le funzionalità di filtro di registro di ELMAH e, dopo aver lasciato l'eccezione ottenere registrato, reindirizzando la risposta al citato ActionResult PageNotFound:

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

Mi sto trascurando qualcosa che viene fornito con MVC di default (perché sto ancora trovare la mia strada per un sacco di cose per quanto riguarda MVC), o overthinking il problema in cui esiste una soluzione più semplice? Apprezzare qualsiasi ingresso.

È stato utile?

Soluzione

Sono sicuro che ASP.NET in grado di gestire questo genere di cose per voi, non necessariamente deve chiamare qualsiasi cosa per reindirizzare al 404 azione all'interno del vostro global.asax. Vedi sotto per un esempio.

<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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top