发生应用程序错误时自定义错误页面

时间:2014-09-13 11:58:39

标签: asp.net asp.net-mvc

如何在发生应用程序错误时显示自定义错误页面而不更改URL?

发生应用程序错误时,如何向客户显示自定义错误页面而不路由到另一个Url?

4 个答案:

答案 0 :(得分:2)

在web.config中检查配置是否如下:

<system.web>
  ...
   <customErrors mode="On">
     <error statusCode="404" redirect="~/custom404.html"/>
   <customErrors
</system.web>

答案 1 :(得分:1)

<customErrors mode="On" defaultRedirect="~/custom404.html">
</customErrors>

答案 2 :(得分:0)

您也可以在代码中执行此操作。对于MVC项目,可以调整Controller的函数OnException,执行一些日志记录和其他内容,然后从格式错误信息的后台加载Error.URL中的内容。

   protected override void OnException(ExceptionContext filterContext)
    {
        if (filterContext != null && filterContext.Exception != null && !filterContext.ExceptionHandled)
        {
            ViewBag.Exception = filterContext.Exception;

            filterContext.Result = View("~/Views/Shared/Error.cshtml");

            filterContext.ExceptionHandled = true;

            Log.Error(filterContext.Exception.Message +":"  + filterContext.Exception.StackTrace);
        }
    }

在这个片段中,项目中的所有控制器都从BaseController继承,其中覆盖了函数OnException。

答案 3 :(得分:0)

Web.config文件

中尝试此操作
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/errors/error">
</customErrors>

在任何错误中,它都会重定向到/errors/error页面。请注意redirectMode属性。使用值ResponseRewrite,网址不会更改。

现在,如果要为特定错误显示不同的页面,可以使用以下内容进行设置。

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/errors/error">
    <error statusCode="404" redirect="/errors/error404" />
    <error statusCode="500" redirect="/errors/error500" />
</customErrors>