不应该阅读流,结束它吗?

时间:2018-11-21 11:03:16

标签: c# stream asp.net-web-api2 outputstream action-filter

为什么读取Response.Content.ReadAsStreamAsync()不会阻止将输出写入客户端?

摘要:我在ActionFilter应用程序中有一个ASP.NET WebAPI 2,正在读取ActionExecuted事件中的整个输出流。这是示例代码:

var content = actionExecutedContext.Response.Content.ReadAsStreamAsync().Result;
byte[] buffer = new byte[content.Length];
content.Read(buffer, 0, (int)content.Length);

在那之后,我期望的是一个 empty-output ,但是整个输出最终都将传递给客户端。我在这里想念什么?不应该读流,结束流吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,调用该方法后它没有清空响应,它只是序列化响应并返回表示序列化内容的 Stream (请参见HttpContent.ReadAsStreamAsync Method

如果要清除响应,则可以尝试将响应的Content属性的值设置为从HttpContent派生的类之一的新实例。

希望有帮助!