2016-08-08 2 views
1

DelegatingHandler을 사용하여 웹 API 응답을 래핑하려고합니다. 예를 들어 this을 사용하고 있습니다. 내용이 필요 어떤 점에서 DelegatingHandler를 사용하여 WebApi 응답 배치

는 응답 객체에서 읽을 수 :

if (response.TryGetContentValue(out content) && ...) 

response.TryGetContentValue(out content) 실제로 아무것도 반환 (또는 인 content 변수를 채울)하지 않기 때문에이 솔루션은 작동하지 않았다. I '변화'코드에 ...

response.Content.ReadAsAsync<object>().Result; 

이 ...이 작업을 수행하지만 경우

.

TryGetContentValueContent.ReadAsAsync은 같은 값을 반환합니다. 왜 이것이 사실이 아닌가?

편집 :

enter image description here

+0

TryGetContentValue가 true 또는 false를 반환하는지 확인할 수 있습니까? –

+0

TryGetContentValue를 호출 할 때 Content 속성 (및 어떤 유형)의 값이 무엇인지 확인할 수 있습니까? –

+0

@ MichałKomorowski : 거짓을 반환합니다. – Ropstah

답변

2

당신이 HttpResponseMessageExtensions.TryGetContentValue 방법의 the source code 보면 당신은 같은 것을 볼 수 있습니다 :

ObjectContent content = response.Content as ObjectContent; 
if (content != null) 
{ 
    ... 
} 

value = default(T); 
return false; 

그것은이 방법은 HttpResponseMessage.Content 속성의 인스턴스를 반환한다고 가정 것을 의미한다 ObjectContent 유형. 그러나 귀하의 경우에는 StringContent이며 ObjectContent으로 캐스팅 될 수 없습니다.

+0

소스 코드를 보았는데 어떻게 든'ObjectContent'를'StringContent'에 캐스팅 할 수 있다고 가정했습니다 ... 감사합니다! – Ropstah

관련 문제