asp.net mvc 전역 오류 처리

4038 단어
방식1: 전역 포획 이상 오류 인코딩에 따라 대응하는 정적 페이지로 직접 이동
1,글로벌에서.asax.cs 파일에 오류 처리 방법 추가 ApplicationError 코드는 다음과 같습니다.
 
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, 오류 인코딩에 따라 대응하는 정적 페이지를 새로 만듭니다
 
 
-
 
 
방법2: 전역 포획 이상 루트를 지정한 페이지로 처리
장점: 오류 페이지에 상세한 오류 정보를 표시할 수 있는 단점: 새로운 루트 지원 (컨트롤러, action) 코드가 필요합니다.
1단계, Global.asax.cs 파일에 오류 처리 방법 추가 ApplicationError 코드는 다음과 같습니다.
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단계 파라미터를 통해 오류 정보를 전달하면 주소란에 지나가는 친구가 오류 처리에 대해 더 좋은 아이디어를 얻을 수 있는 환영 조언을 보냅니다. 감사합니다!
 
전재 대상:https://www.cnblogs.com/3dianpomian/p/5336376.html

좋은 웹페이지 즐겨찾기