필자는 Perl 기반 REST 서비스를 사용하고 있으며 C# 및 WCF를 사용하여 클라이언트가 서비스와 통신하도록합니다. 비싼 전화가 몇 개있어서 캐싱 시스템을 만들고 싶습니다. 캐시 된 데이터의 최신 버전이 서버에 있는지 확인하고 확인하는 기능이 필요합니다. 나는 표준 "If-Modified-Since"요청 헤더와 "304 Not Modified"응답 상태 코드를 사용하려고했지만 응답에 던져진 예외를 잡는 데 문제가 있습니다.WCF, REST 및 표준 HTTP 헤더를 사용하여 클라이언트 측 캐시 구현
내 클라이언트 클래스는 ClientBase <>에서 파생됩니다. 서비스 메서드를 호출하는 데 사용하는 메서드는 다음과 같습니다.
private T RunMethod<T>(ReqHeaderType reqHeaders, ResHeaderType resHeaders, Func<T> meth)
{
//Get request and response headers
var reqProp = GetReqHeaders(reqHeaders);
var resProp = GetResHeaders(resHeaders);
using (var scope = new OperationContextScope(this.InnerChannel))
{
//Set headers
OperationContext
.Current
.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = reqProp;
OperationContext
.Current
.OutgoingMessageProperties[HttpResponseMessageProperty.Name] = resProp;
//Return the result of the call
return meth();
}
}
서비스 메서드를 실행하는 콜백이 실행될 때 예외가 발생합니다. 예외를 잡아서 "Not Modified"응답인지 확인하는 방법이 있습니까?
나는 주저하면서 부분적으로 조언을 듣고 있습니다. 내가 REST 스타터 키트의 HttpClient를 사용하고 있지만. WCF의 전체 복잡한 구조는 간단한 REST 클라이언트에 대한 과도한 부담이었습니다. 필요한 많은 세부 정보를 숨겼습니다. 감사. –
@Anthony 네, HttpClient가 훨씬 더 좋은 선택입니다. 그것이 내가 현재 사용하고있는 것입니다. –