【问题标题】:HttpResponse.Filter how determine End of streamHttpResponse.Filter 如何确定流的结束
【发布时间】:2023-04-06 17:41:01
【问题描述】:

我有一个 HttpResponse.Filter 过滤器,用于替换 HTML 中的文本。

我创建了一个派生自 Stream 的类并实现了 Write 方法:

public override void Write(byte[] buffer, int offset, int count)

我从缓冲区读取所有字节并将它们存储在私有 StringBuilder 中,然后替换文本,并将字符串写回 Stream。

但是我如何确定流何时位于流的末尾。 IE。如何确定何时将 html(字符串)写回流?

【问题讨论】:

  • 埃里克,你能发布你的解决方案吗?我的响应过滤器出现了奇怪的行为,了解您如何解决问题可能会有所帮助。我当前的问题在这里描述:stackoverflow.com/questions/4464983/…

标签: c# httpresponse


【解决方案1】:

Read 方法返回从流中读取的字节数。请务必注意此值,因为它可能小于请求的字节数,尤其是在流的来源速度较慢(例如 Internet 连接)时。

Read 方法返回零时,您已到达流的末尾。

【讨论】:

  • 我放了一个断点:public override int Read(byte[] buffer, int offset, int count) 但它永远不会被命中
  • @Erik:我明白了...当您覆盖 Write 方法时,您实际上并没有读取任何数据...然后您无法检测到流的结尾,但您可能能够覆盖 Close 方法并在那里写出结果。
  • 我通过写覆盖刷新方法解决了这个问题。它运作良好。感谢您的帮助!
猜你喜欢
  • 2021-02-26
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2012-04-18
相关资源
最近更新 更多