我在HttpModule中使用HttpContext.Current.Response.Filter来替换我页面上的一些字符串。
public class RplModule : IHttpModule
{
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(context_ReleaseRequestState);
}
public void context_ReleaseRequestState(object sender, EventArgs e)
{
HttpContext.Current.Response.Filter = new HtmlFilter(HttpContext.Current.Response.Filter);
}
public void Dispose() { }
}
这里是HtmlFilter类:
public class HtmlFilter : MemoryStream
{
private readonly Stream _outputStream;
public HtmlFilter(Stream outputStream)
{
_outputStream = outputStream;
}
public override void Write(byte[] buffer, int offset, int count)
{
var contentInBuffer = Encoding.UTF8.GetString(buffer);
contentInBuffer = contentInBuffer.Replace("href=\"Res", "href=\"User/Res");
_outputStream.Write(Encoding.UTF8.GetBytes(contentInBuffer), offset, Encoding.UTF8.GetByteCount(contentInBuffer));
_outputStream.Flush();
}
}
它工作正常,将取代每一次出现,但问题是它会破坏一些行,一些文本和代码将被混淆,页面无法正常加载。有时它会在某些地方添加一些奇怪的字符串! 问题在哪里?