0

가 나는 REST 서비스를하고 난 다음과 같이예외 처리

내 코드가 보이는 예외를 처리하는 도우미 클래스를 갖고 싶어 :

[WebGet(UriTemplate = "/Test/{param}")] 
public Stream Test(string param) 
{ 
     if (param == "Ok") 
      return Process(param); 
     else 
     { 
      RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok"); 
      return null; 
     } 
} 


private void RESTException(System.Net.HttpStatusCode httpStatusCode, string message) 
{ 
     OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse; 
     response.StatusCode = httpStatusCode; // or anything you want 
     response.StatusDescription = message; 
} 

나는 브라우저에서 테스트, 그러나 나는 통과 할 때를 잘못된 매개 변수, 예.

http://myaddress/Service/Test/badparam 

아무 것도 브라우저에 표시되지 않습니다.

내 코드가 잘못 되었나요?

답변

0

에 에 의해 REST WCF WebApi

private void RESTException(SelectFault fault, System.Net.HttpStatusCode httpStatusCode) 
    { 
     throw new WebFaultException<string>(fault.ErrorMessage, httpStatusCode); 
    } 
1

변경

RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok"); 
return null; 

내가 적절한 예외를 던져 REST가 제공하는 브라우저 또는 REST 테스트 클라이언트에서 테스트 적절한 예외 정보를 보여 slsdo 아래와 같이 RESTException을 변경

RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok"); 
return "Param not ok"; 
+0

죄송합니다. 웹 메서드는 문자열이 아닌 스트림을 반환해야합니다. 명시 적으로 오류 메시지를 반환하고 싶지는 않지만 브라우저가 예외를보고해야합니다 (예 : 400 : BAD Request). 어떠한 제안? – bzamfir

+0

400 오류를 반환 하시겠습니까? 파이어 폭스 또는 비슷한 비슷한 파일을 사용하여 서버에서 보낸 http 헤더를 검사하여 400 개의 잘못된 요청이 포함되어 있는지 확인할 수 있습니다. –