HttpResponse.Filter如何确定流的结束

3

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

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

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

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

但是我如何确定流已经到达了流的末尾。也就是说,我如何确定何时将HTML(字符串)写回到流中?


Erik,你能发一下你的解决方案吗?我的响应过滤器出现了奇怪的行为,看看你是如何解决问题的可能会有帮助。我目前的问题在这里描述:https://dev59.com/aFLTa4cB1Zd3GeqPc7mb - Ryan Taylor
1个回答

2
< p > Read 方法返回从流中读取的字节数。重要的是您要注意这个值,因为它可能会比请求的字节数少,特别是如果流的来源是像互联网连接这样的缓慢的东西。< /p > < p > 当 Read 方法返回零时,您已经到达了流的末尾。< /p >

我在以下代码中设置了断点但它从未被触发: public override int Read(byte[] buffer, int offset, int count) - Erik Sundström
@Erik:我明白了...你实际上并没有读取任何数据,因为你重写了Write方法...那么你就无法检测到流的结束,但你可能可以重写Close方法并在那里输出结果。 - Guffa
我通过编写覆盖flush方法来解决了这个问题。它运行良好。感谢您的帮助! - Erik Sundström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接