这种使用ELMaH和MVC气味的方法吗?

Phi*_*ler 7 asp.net-mvc elmah exception-handling http-status-code-404

我一直在寻找使用ELMaH与ASP.Net MVC的一些方法,以便我可以使用自定义错误页面来处理包括404s在内的所有异常.

没有短缺问题 ,询问如何获得/Shared/Error.aspx在ASP.Net MVC正常工作-不论有无ELMAH.我没有遇到过这个任务的问题,但我觉得我在ELMaH旁边使用自定义404页面的解决方案太简单了,我不能动摇它应该有更多的感觉.

在Web.Config中启用customErrors后,我在HomeController中创建了一个新的Action:

public ActionResult PageNotFound()
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

从那里我在我的Global.asax文件中添加了一个新方法,以利用ELMaH的日志过滤功能,并在记录异常后,将响应重定向回上述PageNotFoundActionResult:

    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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

我是否忽略了默认情况下MVC附带的东西(因为我仍然找到了很多关于MVC的方法),或者过度思考存在更简单解决方案的问题?感谢任何输入.

Kha*_*meh 3

我确信 ASP.NET 可以为您处理此类事情,您不一定需要调用任何内容来重定向到 global.asax 中的 404 操作。请参阅下面的示例。

<configuration>
    <system.web>
        <customErrors mode="On">
            <error statusCode="404" redirect="/servererrors/404.aspx" />
        </customErrors>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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