Я создал простой 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 для управления отображаемым выводом?