首页 新闻 会员 周边 捐助

ast.net mvc 中如何自定义500错误页

0
悬赏园豆:10 [待解决问题]

在web.config文件中已经添加了如下的配置项,但是出错后,还是跳转到了系统内置的500错误页

<customErrors mode="On" >
   <error statusCode="404" redirect="/BD/HandleException/NoFound" />
      <error statusCode="500" redirect="/BD/HandleException/ErrorView" />
  </customErrors>,谢谢了

骑蜗牛行天下的主页 骑蜗牛行天下 | 初学一级 | 园豆:32
提问于:2014-05-14 14:02
< >
分享
所有回答(4)
0

定义一个全局异常过滤器

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-14 14:19
0
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
     <error statusCode="404" redirect="404.htm" /> 
     <error statusCode="500" redirect="500.htm" /> 
</customErrors>

加上defaultRedirect,而且建议是静态页,有可能是你下面的错误页又出错了

丁学 | 园豆:18730 (专家六级) | 2014-05-14 14:21
0

一楼说的对,实现一个过滤器,在过滤器中出现错误进行跳转,在Global.asax RegisterGlobalFilters方法注册自己实现的过滤器

秋壶冰月 | 园豆:5903 (大侠五级) | 2014-05-14 17:09
0

过滤器是不够滴,配置也不是楼上那么写(你们的写法是传统asp.net的).写我的给你参考下,这个绝对正解.

    public class Errorfilter : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            string a = HttpContext.Current.Response.StatusCode.ToString();
            if (HttpContext.Current.Response.StatusCode != 200 || HttpContext.Current.Response.StatusCode != 304)
            {
                HttpContext.Current.Response.Redirect("/Error/Error");
            }
            base.OnException(filterContext);
        }
    }

system.webServer里面添加

    <!--不加 <clear/>的话会出现"无法访问请求的页面,因为该页的相关配置数据无效。"这个错误-->
    <httpErrors errorMode="Custom" defaultResponseMode="Redirect">
      <clear />
      <error statusCode="404" path="/Error/Error" responseMode="Redirect" />
      <error statusCode="500" path="/Error/Error" />
    </httpErrors>

 

这样就万无一失了

Cherbim | 园豆:323 (菜鸟二级) | 2014-05-14 21:02

大神,我试过了啊,还是不行的啊,出错之后,还是跳不到500页面那里去,现在页面找不到也跳不到404页面去了,我已经在global.asax.cs文件中添加了这个过滤器,也按照你给的配置以及代码尝试了,不知道为啥还是不行了,谢谢指教了啊

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            //filters.Add(new HandleErrorAttribute(), 1);
            filters.Add(new ErrorFilter());
        }

支持(0) 反对(0) 骑蜗牛行天下 | 园豆:32 (初学一级) | 2014-05-15 09:08

@骑蜗牛行天下: global是来注册事件的。我觉得是你路由问题,你看看按你那个相对路径能直接访问错误页面不。我当时是建Error控制器下的Erroraction。

支持(0) 反对(0) Cherbim | 园豆:323 (菜鸟二级) | 2014-05-15 10:27

@骑蜗牛行天下: 直接访问不到的话那应该是你路由映射不到。要么你写多个路由,要么你就像我那样建多一个控制器,把错误页放在对应的view里

支持(0) 反对(0) Cherbim | 园豆:323 (菜鸟二级) | 2014-05-15 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册