asp.Netmvcグローバルエラー処理

4020 ワード

方法1:グローバルキャプチャ異常エラー符号化に従って直接対応する静的ページにジャンプ
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,エラーエンコーディングにより対応する静的ページを新規作成する
 
 
-
 
 
方式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パラメータを介してエラーメッセージを渡すと、アドレスバーを通りかかった友人がエラー処理に対してより良いアイデアを持っていることが表示されます.
 
転載先:https://www.cnblogs.com/3dianpomian/p/5336376.html