Я создал простой 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 НЕ вызывала запись несколько раз, например изменив размер буфера или я выбрал неправильный подход полностью, используя этот метод Response.Filter для манипулирования отображаемым выводом?