내 MVC 프로젝트에서 Application_Error를 사용하고 싶지만 제대로 작동하지 않습니다. 나는 내에서 Global.asax 파일에 다음을 추가합니다. (세션이 테스트를 위해 아니라 내가이 일을 얻는 경우 임 거, 오류를 기록하는 데이터베이스를 사용합니다.)ASP.NET MVC에서 Application_Error를 어떻게 사용합니까?
protected void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
Session["Test"] = "Message:" + objErr.Message.ToString();
}
그런 다음 내가 던져하려고 내 HomeController 및 Home/Index View에서 예외가 발생하지만 Debug 만 트리거합니다. 내 Webconfig 파일에서
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
throw (new Exception());
return View();
}
내가는 defaulterror 페이지를 설정하지만보기로 리디렉션되지 않습니다
<customErrors defaultRedirect="Home/Error">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
솔루션에 문제가 있습니다. CustomErrors는 컨트롤러를 트리거하지 않고 홈/오류보기로 직접 리디렉션합니다. 이게 가능한지 몰랐는데, 디버그 포인트를 Error Action 메서드에 넣으면 디버그는 절대 호출되지 않습니다. 오류보기는 화면에 표시되지만 URL은 여전히 오류를 유발 한 URL과 동일합니다. 예를 들어/Home/Job에서 오류가 발생하면 오류보기가 표시되지만 URL은/Home/Job 인 경우 – Poku
안녕하세요 @blowdart : 의견을 남길 수없는 새로운 사용자의 메시지 :이 답변은 평면입니다. 잘못된. 문제는 web.config를 사용하여 기본 컨트롤러 작업으로 리디렉션하는 경우 Controller 클래스에서 Server.GetLastError()를 호출하면 작동하지 않는다는 것입니다. ASP는 서버 변수를 지우고 예외 정보를 잃어 버리는 오류 컨트롤러에 대한 새 HTTP 요청을 시작합니다. –
악성 응답 ..... 여기에 왜 두 가지를 모두 사용해야하는지에 대한 좋은 기사입니다. http://www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc –