【发布时间】:2010-07-02 12:21:28
【问题描述】:
我编写了一个 Http 模块,它与当前请求的 Response.Filter 属性挂钩,并在 HTML 中进行各种替换,然后再将其发送到客户端。
所有工作都在重写基类 Stream 中的 Write 的 Write 方法中完成。
Write 方法被多次调用以获得单个响应 - HTML 似乎以块的形式写入输出流。我的问题是我没有一种有效且可靠的方法来判断当前块是否是最后一个块(为什么我想知道这一点,见下文)。我想出的唯一方法是检查块是否包含结束 html 标记 - 但这不是非常有效或可靠。
需要这样做的原因是模块必须将“刷新”HTTP 标头添加到响应中,但前提是 HTML 满足某些条件(并且某些条件意味着不得添加标头)。因此,只有在看到最后一个块时,代码才知道是否可以添加标头。因此,我需要对最后一个块进行测试,或者在每次调用 Write 时,如果当前 HTML 块通过测试(如果尚未添加),则添加标头,如果当前 HTML 块则删除标头未通过测试(如果已添加)。
那么,有没有更好的方法来测试最后一个卡盘,或者有没有办法测试响应中的特定标头并将其删除(似乎没有办法做到这一点 - 只是为了附加标题)?
谢谢
【问题讨论】:
标签: asp.net stream httpmodule http-headers