asp.net mvc 전역 오류 처리
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.