2017-02-07 1 views
0

모든 오류에 대해 json 오류 응답을 생성하는 데 사용하는 사용자 지정 개체를 만들었습니다. 내가 가지고있는 문제는 내가 잡을 수없는 몇 가지 오류가 있다는 것입니다. 내가 작업을 호출하려고하면 예를 들어, 기본 응답은 GET 지원하지 않는ASP.NET 모든 표준 http 오류 응답을 재정의합니다.

{ "메시지": ". 요청 된 자원이 'GET' HTTP 메서드를 지원하지 않습니다"}

괜찮습니다.하지만 형식을 제어하고 싶습니다. 이 모든 단일 자동화 된 오류를 제어 할 싶습니다 그래서 아무것도 출력 출력되고 싶지 않아 있는지 확인할 수 있습니다. 나는 코드 예외가 발생했다면 클라이언트에게 알릴 수 있어야한다.

이걸 찾았는데이게 내가 찾고있는 것 같지만, 이걸로 맞출만한 행동이 없어서 오류를 잡는 것 같지 않아. How to override all standard error pages in WebAPI

나는 이것을 구현하려고 시도했지만, 나는 메인 컨트롤러에 이것을 가지고 있어도 여전히 위에서 같은 에러 메시지를 얻는다.

[AllowAnonymous] 
[ActionName("405")] 
[HttpGet] 
public string Status405() 
{ 
    return "error"; 
} 

나는 모든 것을 무시할 수있는 onerror 이벤트 나 catch가 모두 필요할 것이라고 기대하고있었습니다. 나는이 나던 작품 중 하나 HttpResponseEx

public class ErrorFilter : System.Web.Http.HttpResponseException 
{ 
    public override string Message 
    { 
     get 
     { 
      return "My custom response based on whatever params are in this error"; 
     } 
    } 
} 

을 기반으로 작동하도록 시도하고 트리거 얻을 모든 이벤트를 활용 나던로 내가 왜 볼 수 있습니다.

분명히 할 수있는 방법이 있습니다. 정상적으로 어떻게 이루어 집니까?

답변

0

web.config에서 사용자 지정 오류를 켜야합니다. 기본적으로 원격으로 설정되어 개발자는 스택 추적 및 최종 사용자가 멋진 오류 페이지를 볼 수 있습니다. 이 값을 on으로 설정하려고합니다. 자세한 내용은 여기를 참조하십시오. https://msdn.microsoft.com/en-us/library/h0hfz6fc(v=vs.85).aspx

+0

이것은 IIS가 처리하는 메시지에만 적용됩니까? 예를 들어 누군가가 디렉토리에 액세스하려고하면 iis는 403을 표시합니다.이 시나리오에서는 실제 컨트롤러가 IIS가 아닌이 응답을 생성하는 것 같습니다. –

+0

유효한 포인트. global.asax 파일에서 다음을 확인하십시오. public static void RegisterGlobalFilters (GlobalFilterCollection filters) { filters.Add (new HandleErrorAttribute()); } 기준 : http://stackoverflow.com/questions/8128302/custom-error-handler-for-http-error-405-in-mvc –

관련 문제