요청 된 리소스를 찾을 수없는 등 WCF REST 호출에서 문제가 발생한 경우 OperationContract 메서드에서 HTTP 응답 코드 (예 : HTTP 404와 같은 것으로 설정)를 어떻게 사용할 수 있습니까?
답변
거기이다 WebOperationContext
당신이 액세스 할 수는 그리고 그것은이 OutgoingResponse
유형의 특성 OutgoingWebResponseContext
가 StatusCode
설정할 수있는 속성을.
WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
답변
이유 본문을 반환해야하는 경우 WebFaultException을 살펴보십시오.
예를 들면
throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest );
답변
404의 경우 WebOperationContext.Current.OutgoingResponse에 SetStatusAsNotFound (string message) 라는 기본 제공 메서드 가있어 상태 코드를 404로 설정하고 한 번의 호출로 상태 설명을 설정합니다.
도있다 참고 (열린 위치) SetStatusAsCreated 한 통화와 201 상태 코드 및 위치 헤더를 설정한다.
답변
헤더에서 상태 설명을보고 싶다면 REST 메소드는 아래와 같이 Catch () 섹션에서 null을 반환해야합니다.
catch (ArgumentException ex)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
return null;
}
답변
WebOperationContext 의 StatusCode 및 StatusDescription을 사용하여 상태 코드 및 이유 본문을 반환 할 수도 있습니다 .
WebOperationContext context = WebOperationContext.Current;
context.OutgoingResponse.StatusCode = HttpStatusCode.OK;
context.OutgoingResponse.StatusDescription = "Your Message";
답변
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());
답변
이것은 WCF 데이터 서비스에서 작동하지 않았습니다. 대신 데이터 서비스의 경우 DataServiceException을 사용할 수 있습니다. 다음 게시물이 유용하다는 것을 알았습니다.
http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de