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

不缺问题 询问 如何让 /Shared/Error.aspx 在 ASP.Net MVC 中正常工作 - 无论是否有 ELMaH。我对这项任务没有遇到任何问题,但我觉得我的解决方案与 ELMaH 一起使用自定义 404 页面太简单了,我无法摆脱应该有更多内容的感觉。

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

public ActionResult PageNotFound()
{
    return null;
}

从那里,我在 Global.asax 文件中添加了一个新方法,以利用 ELMaH 的日志过滤功能,并在记录异常后,将响应重定向回上述内容 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");
        }
    }

我是否忽略了 MVC 默认附带的某些内容(因为我仍在寻找有关 MVC 的许多内容的方法),或者过度思考存在更简单解决方案的问题?感谢任何输入。

有帮助吗?

解决方案

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

<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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top