zoukankan      html  css  js  c++  java
  • asp.net mvc全局错误处理

    方式一:全局捕获异常 根据错误编码直接跳转到对应静态页面

    1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下

    protected void Application_Error(object sender, EventArgs e)
    {
                Exception exception = Server.GetLastError();
                Log.Error(exception); //记录日志信息  
                var httpStatusCode = (exception as HttpException)?.GetHttpCode() ?? 700; //如果为空则走自定义
                var httpContext = ((MvcApplication)sender).Context;
                httpContext.ClearError();
    
                #region 直接跳转到对应错误页面
                switch (httpStatusCode)
                {
                    case 404:
                        httpContext.Response.Redirect("/Error/404.html");
                        break;
                    default:
                        httpContext.Response.Redirect("/Error/500.html");
                        break;
                }
                #endregion
    }

    2,根据错误编码新建对应的静态页面

    -

    方式二:全局捕获异常 路由到指定页面处理

    优点 :在错误页可显示详细错误信息
    缺点:需要有新的路由支持(控制器 ,action ) 代码如下

    步骤1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下

    protected void Application_Error(object sender, EventArgs e)
            {
                Exception exception = Server.GetLastError();
                Log.Error(exception); //记录日志信息  
                var httpStatusCode = (exception as HttpException)?.GetHttpCode() ?? 700; //如果为空则走自定义
                var httpContext = ((MvcApplication)sender).Context;
                httpContext.ClearError();
    
                #region 重定向到错误处理控制器
                var routeDic = new RouteValueDictionary
                {
                    {"controller", "Error"},
                    {"error", exception}
                };
                httpContext.Response.RedirectToRoute("Default", routeDic);
                #endregion
            }    
    

      

    步骤2,新建对应的错误处理控制器或方法

    注:这里面可以用一个方法处理 然后把错误编码也通过参数传进来 进行区分跳转页面或显示异常信息

    也可以根据错误编码建立多个方法 在步骤1中根据错误编码路由到不同的方法进行显示

    public class ErrorController : Controller
        {
            public ActionResult Index(string error)
            {
                ViewBag.Summary= "WebSite 网站内部错误";
                ViewBag.Description = error;
                return View();
            }
            //public ActionResult HttpError404(string error)
            //{
            //    ViewData["Title"] = "HTTP 404- 访问的页面不存在";
            //    ViewData["Description"] = error;
            //    return View();
            //}
        }
    

    不足之处:
    步骤2 通过参数传递错误信息会显示在地址栏 
    路过的朋友针对错误处理有更好的思路的欢迎建议,谢谢大家!

  • 相关阅读:
    我还没死!!微信公众号——自媒体的营销之路
    网页中嵌入视频
    保存对象到文件中
    bash array
    正则表达式如何验证邮箱
    software testing
    Verification and validation
    bash array
    12 Linux Which Command, Whatis Command, Whereis Command Examples
    如何进行产品路标规划和项目排序?
  • 原文地址:https://www.cnblogs.com/3dianpomian/p/5336376.html
Copyright © 2011-2022 走看看