【问题标题】:Shouldn't reading a stream, end it?不应该阅读流,结束它?
【发布时间】:2019-04-23 22:38:05
【问题描述】:

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

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

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

在那之后我期待的是一个空输出,但毕竟整个输出都会发送到客户端。我在这里想念什么?不应该读取流,结束它吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2021-03-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多