2016-08-08 11 views
1

DelegatingHandlerを使用してWeb API応答をラップしようとしています。私は例としてthisを使用しています。DelegatingHandlerを使用してWebApi応答をラップする

いくつかの時点で、内容はレスポンスオブジェクトから読み取るする必要があります

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

response.TryGetContentValue(out content)は、実際には何を返す(またはあるcontent変数移入)をしないので、解決策は動作しませんでした。

しかしI '変更' コードに...

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

...それは作業を行います。

TryGetContentValueContent.ReadAsAsyncは同じ値を返します。なぜこれは当てはまりませんか?

EDIT:

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

関連する問題