我已經創建了一個簡單的HttpModule和響應流來重新格式化網頁的渲染輸出(請參閱下面的代碼片段)。ASP.NET響應篩選以重新格式化ASPX頁面的呈現輸出?
在我的Response.Filter設置爲我PageStream的HTTP模塊:
m_Application.Context.Response.Filter = new PageStream(m_Application.Context);
在我重寫Write方法,以盡我的渲染輸出的重新格式化PageStream:
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方法來處理渲染輸出?
雖然你的回答對我的問題沒有任何意義,但我自然會在設置Response.Filter之前檢查內容類型,所提供的文章確實幫了我一些忙。謝謝。 – PropellerHead 2009-10-10 10:28:19