1

我正在尝试使用 aDelegatingHandler来包装我的 Web API 响应。我用这个作为例子。

在某些时候需要从响应对象中读取内容:

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

该解决方案不起作用,因为response.TryGetContentValue(out content)实际上并没有返回任何东西(或填充content变量)。

但是,如果我将代码“更改”为...

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

...它确实有效。

我希望这样TryGetContentValueContent.ReadAsAsync返回相同的值。为什么不是这样?

编辑:

在此处输入图像描述

4

1 回答 1

3

如果您查看方法的源代码HttpResponseMessageExtensions.TryGetContentValue您将看到如下内容:

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

value = default(T);
return false;

这意味着此方法假定HttpResponseMessage.Content属性将返回ObjectContent类型的实例。但是,在您的情况下,它是StringContent并且不能强制转换为ObjectContent.

于 2016-08-08T09:34:50.140 回答