Webページのレンダリングされた出力を再フォーマットするための単純な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メソッドを使用してレンダリングされた出力を操作することにより、間違ったアプローチを完全に選択しましたか?