Pregunta

He estado buscando alrededor por algunos enfoques para el uso de ELMAH con ASP.Net MVC para que pueda utilizar la página de error personalizado para todas las excepciones que incluyen 404.

Hay hay escasez de preguntas pidiendo cómo hacer el trabajo correctamente /Shared/Error.aspx en ASP.Net MVC - ya sea con o sin ELMAH. No he tenido un problema con esa tarea, pero me siento como si mi solución a usar una página 404 personalizada junto ELMAH era demasiado simple y no puedo evitar la sensación de que no debe haber más a él.

Después de habilitar customErrors en Web.Config, he creado una nueva acción en mi HomeController:

public ActionResult PageNotFound()
{
    return null;
}

A partir de ahí he añadido un nuevo método en mi archivo Global.asax para aprovechar las capacidades de filtrado de registro de ELMAH y, después de dejar la excepción sesión de usuario, redirigiendo la respuesta de vuelta al ActionResult PageNotFound mencionado:

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

estoy pasando por alto algo que viene con MVC por defecto (porque todavía estoy encontrando mi camino para un montón de cosas con respecto a MVC), o pensar demasiado el problema donde no existe una solución más simple? Apreciar cualquier entrada.

¿Fue útil?

Solución

Estoy seguro de ASP.NET puede manejar ese tipo de cosas para usted, usted no necesariamente tiene que llamar a cualquier cosa para redirigir a la acción 404 dentro de su Global.asax. Vea a continuación un ejemplo.

<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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top