MVC3 기본 웹 사이트를 개발 중이며 오류 처리 및 각 종류의 오류에 대한 커스텀 뷰 렌더링을위한 솔루션을 찾고 있습니다. 따라서 그의 주요 동작이 "Index"(일반 오류 페이지) 인 "Error"컨트롤러가 있고이 컨트롤러에 "Handle500"또는 "HandleActionNotFound"와 같이 사용자에게 나타날 수있는 오류에 대한 몇 가지 추가 조치가있을 것입니다.
따라서 웹 사이트에서 발생할 수있는 모든 오류는이 "오류"컨트롤러에 의해 처리 될 수 있습니다 (예 : "컨트롤러"또는 "액션"을 찾을 수 없음, 500, 404, dbException 등).
Sitemap 파일을 사용하여 웹 사이트 경로를 정의하고 경로를 지정하지 않습니다.
이 질문에 이미 답변되었습니다, 이것은 Gweebz의 답변입니다
내 마지막 applicaiton_error 방법은 다음과 같습니다.
protected void Application_Error() {
//while my project is running in debug mode
if (HttpContext.Current.IsDebuggingEnabled && WebConfigurationManager.AppSettings["EnableCustomErrorPage"].Equals("false"))
{
Log.Logger.Error("unhandled exception: ", Server.GetLastError());
}
else
{
try
{
var exception = Server.GetLastError();
Log.Logger.Error("unhandled exception: ", exception);
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
IController errorsController = new ErrorsController();
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
errorsController.Execute(rc);
}
catch (Exception e)
{
//if Error controller failed for same reason, we will display static HTML error page
Log.Logger.Fatal("failed to display error page, fallback to HTML error: ", e);
Response.TransmitFile("~/error.html");
}
}
}