zoukankan      html  css  js  c++  java
  • C# MVC模式 404 500页面设置方法

    <customErrors mode="On" defaultRedirect="Controllers/Action">
    <error statusCode="403" redirect="Controllers/Action" /> <error statusCode="404" redirect="Controllers/Action" /> </customErrors> 这里不是对应你想转到的页面而是你所想跳转的某个Controllers 中的某个Action

    方法二:

    复制代码
    protected void Application_EndRequest()
    {
            var statusCode = Context.Response.StatusCode;
            var routingData = Context.Request.RequestContext.RouteData;
            if (statusCode == 404 || statusCode == 500)
            {
               Response.Clear();
               var area = DataHelper.ConvertTo(routingData.DataTokens["area"], string.Empty);
               if (area == "Admin")
               {
                    Response.RedirectToRoute("Admin_Default", new { controller = "BackError", action = "NotFound", IsReload = 1 });
               }
               else
               {
                    Response.RedirectToRoute("Default", new { controller = "Error", action = "NotFound", id = UrlParameter.Optional });
               }
    
           }
    }
    复制代码

    方法三:

    Global.aspx.cs
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)  
    {  
        filters.Add(new CustomHandlerErrorAttribute());  
    }  

    CustomHandlerErrorAttribute.cs

    复制代码
    public class CustomHandlerErrorAttribute : HandleErrorAttribute  
    {  
        public override void OnException(ExceptionContext filterContext)  
        {  
            if (filterContext.ExceptionHandled)  
            {  
                return;  
            }  
      
            filterContext.Controller.ViewData.Model = filterContext.Exception;  
      
            filterContext.Result = new ViewResult   
            {   
                ViewName = "Error",   
                ViewData = filterContext.Controller.ViewData   
            };  
      
            filterContext.ExceptionHandled = true;  
        }  
    }  
    复制代码

    web.config <system.web>

    <customErrors mode="On">  
      <error redirect="/home/error" statusCode="404" />  
    </customErrors>  

    web.config  <system.webServer>

    <httpErrors errorMode="Custom" existingResponse="PassThrough">  
    </httpErrors>  

    Error.cshtml

    复制代码
    <div class="box">  
        @{  
            
            var exception = ViewData.Model;  
            var statusCode = exception == null ? 404 : 500;  
            Response.StatusCode = statusCode;  
            if (statusCode == 404)  
            {  
                <h3>404 Page not found!</h3>  
                <p>没有找到该网页!</p>  
            }  
            else if (statusCode == 500)  
            {  
                <h3>500 程序异常</h3>  
                <p>@exception.Message</p>  
            }  
        }  
        <p style="font-size: 12px; color: Gray">请使用浏览器的后退功能已保证您填写的数据没有丢失!</p>  
    </div>  
    复制代码
  • 相关阅读:
    2008年Web2.0峰会:发展是绝对的硬道理
    盖茨"接班人":微软产品为何总是挨批
    如何使用命令方式检测mx记录是否生效
    IBM公布未来5年将改变人类生活的五大科技
    谷歌李开复:我的传奇人生源于十句箴言
    VCL已死,RAD已死(3)
    VCL已死,RAD已死(2)
    主要程序设计语言范型综论与概要
    谷歌正式放弃与雅虎的广告合作计划
    模仿google分页代码
  • 原文地址:https://www.cnblogs.com/webenh/p/6086257.html
Copyright © 2011-2022 走看看