我创建了一个简单的 HttpModule 和响应流来重新格式化网页的呈现输出(参见下面的代码片段)。
在 HttpModule 中,我将 Response.Filter 设置为我的 PageStream:
m_Application.Context.Response.Filter = new PageStream(m_Application.Context);
在 PageStream 中,我覆盖了 Write 方法,以便重新格式化呈现的输出:
public override void Write(byte[] buffer, int offset, int count)
{
string html = System.Text.Encoding.UTF8.GetString(buffer);
//Do some string resplace operations here...
byte[] input = System.Text.Encoding.UTF8.GetBytes(html);
m_DefaultStream.Write(input, 0, input.Length);
}
在简单的 HTML 页面 (.html) 上使用它时效果很好,但是当我在 ASPX 页面 (.aspx) 上使用此方法时,Write 方法会被调用多次,将重新格式化分成不同的步骤,并可能破坏字符串替换操作。
我该如何解决这个问题?有没有办法让 ASPX 页面不调用 Write 多次,例如通过更改其缓冲区大小,或者我完全选择了错误的方法,通过使用此 Response.Filter 方法来操作呈现的输出?