WCF REST 방법에서 사용자 정의 HTTP 상태 코드를 어떻게 반환 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/140104

  •  02-07-2019
  •  | 
  •  

문제

요청 된 리소스를 찾을 수없는 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.outgadingResponse ~라고 불리는 setstatusasnotfound (문자열 메시지) 상태 코드를 404로 설정하고 한 번의 호출로 상태 설명이 설정됩니다.

또한, 또한 setstatusascreated (URI 위치) 상태 코드를 한 번의 호출로 201 및 Location 헤더로 설정합니다.

헤더에서 상태 설명을 보려면 REST 메소드가 아래와 같이 Catch () 섹션에서 NULL을 반환해야합니다.

catch (ArgumentException ex)
{
    WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
    WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
    return null;
}
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());

ref :https://social.msdn.microsoft.com/forums/en-us/f6671de3-34ce-4b70-9a77-39ecf5d1b9c3/weboperationcontext--statuses-and-exceptions?forum=wcf

당신은 또한 상태 코드와 이유를 반환 할 수 있습니다. weboperationcontext'에스 상태 코드 그리고 statusDescription:

WebOperationContext context = WebOperationContext.Current;
context.OutgoingResponse.StatusCode = HttpStatusCode.OK;
context.OutgoingResponse.StatusDescription = "Your Message";

이것은 WCF 데이터 서비스에 효과가 없었습니다. 대신 데이터 서비스의 경우 DataServiceException을 사용할 수 있습니다. 다음 게시물이 유용하다는 것을 알았습니다.http://social.msdn.microsoft.com/forums/en/adodotnetdataservices/tread/f0cbab98-fcd7-4248-af81-5f74b019d8de

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top