요청한 리소스를 찾을 수없는 것과 같이 WCF REST 호출에서 문제가 발생하면 내 OperationContract 메소드에서 HTTP 응답 코드 (예 : HTTP 404와 같은 값으로 설정)로 어떻게 재생할 수 있습니까?WCF REST 메서드에서 사용자 지정 HTTP 상태 코드를 반환하려면 어떻게해야합니까?
답변
가 액세스 할 수있는 WebOperationContext
있습니다 그것은 설정할 수있는 StatusCode
속성이 유형 OutgoingWebResponseContext
의 OutgoingResponse
속성이 있습니다.
WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
이 작업은 WCF Data Services - 서비스 운영 내에서 가능합니까? 나는 행운을 얻지 못했고, 내가 설정 한 StatusCode가 다른 것에 의해 엉망이 된 것처럼 보인다. 따라서 모든 HTTP POST 요청에서 201과 같이 설정했는지에 관계없이 204로 돌아갑니다. – RyBolt
제 경우에는 작동하지 않습니다. 상태는 덮어 씁니다. 그러나 'WebFaultException'을 던지면 작동하는 것 같습니다. –
(404)를 들어이 404 상태 코드와 하나의 호출로 상태에 대한 설명을 설정합니다 SetStatusAsNotFound (문자열 메시지)라는 WebOperationContext.Current.OutgoingResponse에 방법에 내장되어있다.
참고 : SetStatusAsCreated (Uri 위치) 상태 코드를 201로 설정하고 위치 헤더를 한 번의 호출로 설정합니다.
허용되는 답변에 표시된 방법보다 선호됩니까? – crush
당신이 이유 몸을 반환해야 할 경우 다음 헤더의 상태 설명을 참조하고자하는 경우 예를 들어 WebFaultException
에 모습
throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest);
, REST 방식이 돌아갈 확인해야해야 다음과 같이 Catch() 섹션의 null :
catch (ArgumentException ex)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
return null;
}
이것은 나에게도 효과가 없었고 여전히 200을 얻었습니다. crossDomainScriptAccessEnabled = "true"로 WebHttpBinding을 사용하고 기본 본문 스타일이 wrapped이고 기본 보내는 응답 형식이 json 인 webHttp의 종점 동작이 사용됩니다. 하지만 그건 중요하지 않아야합니까? – Shavais
이것은 WCF Data Services에서 나에게 적합하지 않았습니다. 대신 Data Services의 경우 DataServiceException을 사용할 수 있습니다. 유용한 게시물을 찾았습니다. http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de
그건 나에게도 도움이 안된다. 나는 다른 유용한 정보가없고 400 개의 잘못된 요청을 받았으며 아무런 응답도 없었다. – Shavais
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());
- 1. WCF REST 메서드에서 사용자 지정 HTTP 상태 코드를 만들려면 어떻게해야합니까?
- 2. 메서드에서 여러 배열을 반환하려면 어떻게해야합니까?
- 3. WCF 서비스에서 인터페이스를 반환하려면 어떻게해야합니까?
- 4. WCF 사용자 지정 인증 - HTTP 상태 401 : 허가되지 않음
- 5. 재정의 된 메서드에서 다른 형식을 반환하려면 어떻게해야합니까?
- 6. Grails 컨트롤러에서 404/50x 상태 코드를 반환하려면 어떻게해야합니까?
- 7. Windows Phone 7에서 200 이외의 HTTP 상태 코드를 얻으려면 어떻게해야합니까?
- 8. WCF 사용자 지정 Http 프록시 인증
- 9. 인증이 필요한 콘텐츠의 REST http 상태 코드?
- 10. Ruby on Rails 도우미 메서드에서 javascript를 반환하려면 어떻게해야합니까?
- 11. 모든 WCF REST OPTION 호출에 사용자 지정 헤더 보내기
- 12. REST : 404 HTTP 상태 코드 매핑
- 13. WCF REST + Windsor 오류 처리
- 14. WCF REST 서비스 메서드에서 문자열에 MVC3 동작을 렌더링합니다.
- 15. WCF REST 수신 요청시 HTTP 헤더를 나열합니다.
- 16. iOS에서 http 요청 응답 상태 코드를 확인하려면 어떻게해야합니까?
- 17. WCF 사용자 지정 WSDL XmlSerializerOperationBehavior
- 18. WCF 사용자 지정 serializer
- 19. WCF 사용자 지정 메시지 보안
- 20. HTTP 상태 코드를 PHP에서 Apache로 되 돌리시겠습니까?
- 21. WCF REST 결과 XML
- 22. 파일을 업로드하여 처리하고 단일 요청으로 결과 파일을 REST WCF 서비스로 반환하려면 어떻게해야합니까?
- 23. 사용자 지정 형식의 WCF 문제
- 24. WCF 사용자 지정 XML serialization
- 25. WCF 사용자 지정 바인딩 - 서비스
- 26. WCF 사용자 지정 서비스 동작
- 27. 사용자 지정 컨트롤의 시각 상태 관리자
- 28. Axis 웹 서비스에서 (사용자 정의) SOAPFault를 반환하려면 어떻게해야합니까?
- 29. WCF REST 서비스 인증
- 30. 메서드에서 사용자 지정 UIButton을 반환 하시겠습니까?
확인 모든 해답은 서비스 구현에 그것을했다. 그들이 완전히 잘못된 uri를 통과한다면 어떨까요? 예기치 않은 히트 수에 404를 제공하는 방법에 대해 어떻게 생각하십니까? –