2017-12-28 16 views
0

코드에서 모든 예외를 처리해야하는 MVC 응용 프로그램을 하나 사용하고 있습니다. 예외 필터를 발견하고 구현했습니다. 예외 필터를 사용하여 페이지를 중단하지 않고 사용자 정의 메시지 표시

public class HandleException : HandleErrorAttribute 
 
{ 
 
     #region Log Initialization 
 
     FileLogService logService = new 
 
     FileLogService(typeof(HandleException)); 
 
     #endregion 
 
     public override void OnException(ExceptionContext filterContext) 
 
     { 
 
      filterContext.ExceptionHandled = true; 
 
      Log(filterContext.Exception); 
 
      base.OnException(filterContext); 
 
     } 
 

 
     private void Log(Exception exception) 
 
     { 
 
      logService.Error(exception.ToString()); 
 
     } 
 
}
가 지금은 아래처럼 내 컨트롤러 속성으로이 필터를 사용 :

[AuthSession] 
 
    [HandleException] 
 
    public class OrganizationalController : BaseController 
 
    { 
 
     
 
     public ActionResult OrgSummary() 
 
     { 
 
      try 
 
      { 
 
       int a = 1, b = 0; 
 
       int result = a/b; 
 
      } 
 
      catch (Exception ex) 
 
      { 
 
       throw ex; 
 
      } 
 
      ViewData["ShowGrid"] = false; 
 
      return View(); 
 
     } 
 
    }

당신이 할 수있는 다음과 같이 생성 된 예외 필터 코드는 위 코드에서 코드에서 예외를 생성하려고합니다. catch 예외 블록에서 throw 키워드를 사용하면 예외 필터가 실행되지 않습니다.

이제 응용 프로그램에서 예외가 발생하면 사용자에게 사용자 지정 팝업 메시지를 표시해야합니다. 사용자가 확인 버튼을 클릭하면 팝업 메시지에서 사용자는 동일한 페이지에서 사용할 수 있어야합니다. 페이지가 깨지거나 비어서는 안됩니다.

어떻게이 기능을 구현할 수 있습니까?

+0

사용하는 사용자 지정 오류 페이지와 캐치의 : 그것은

public class MyExceptionFilter: FilterAttribute, IExceptionFilter { public void OnException(ExceptionContext filterContext) { // below code will redirect to the error view filterContext.Result = new RedirectResult("ErrorPage.html"); filterContext.ExceptionHandled = true; } } 

을하는 데 도움이 다음과 같은 액션 메소드에 속성으로 위의 내용을 적용 할 필요가있을 수 있습니다 –

+0

나는 다른 포스트에서이 질문에 대답한다고 생각한다 : https://stackoverflow.com/questions/35539341/custom-exceptions-to-http-status-codes-in-asp-net-api/35539558#35539558 –

+0

안녕하세요 Arijit, 빠른 답장을 보내 주셔서 감사합니다. 내 질문은 여기에 예외 필터 try 메서드를 사용하여 try catch 블록을 사용하지 않고 호출되는 경우 다음 무엇입니까. 사용자 세션이 활성화되어 있는지 확인하기 위해 다른 필터를 만들었으므로 각 요청에서이 필터가 해고되고이 문제를 확인합니다. 그러나 예외 필터에서는 같은 경우가 없습니다. 나는 각각의 액션 메소드에서 try catch 블록을 작성하고 키워드를 던져이 필터가 타격을 가하는 것을 사용해야한다. 이 경우이 필터의 사용은 무엇입니까? –

답변

0

이 코드를 사용해보십시오. 귀하의 경우 그 부분 페이지 또는 팝업에 보내 [MyExceptionFilter]
public ActionResult XYZ() { }

+0

안녕 Pooja,이 코드는 이미 있습니다. 이 코드에서 어떤 페이지가 예외를 발견하면 프로세스는이 필터를 호출하고 사용자에게이 html 페이지로 리다이렉트하여 다시 사용자가 전에 요청한대로 이전 페이지로 이동해야합니다. 예외 필터에 부분 뷰를 반환 할 수 있습니까? –

관련 문제