我尝试使用DelegatingHandler
来包装我的Web API响应。我以this为例。
在某些时候,需要从响应对象中读取内容:
if (response.TryGetContentValue(out content) && ...)
该解决方案无效,因为response.TryGetContentValue(out content)
实际上并未返回任何内容(或填充content
变量。
但是,如果我改变了'代码......
response.Content.ReadAsAsync<object>().Result;
......确实有效。
我希望TryGetContentValue
和Content.ReadAsAsync
返回相同的值。为什么不是这样?
编辑:
答案 0 :(得分: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
。