HttpContext.Current.Response.Filter将替换错误的字符串

时间:2016-02-03 11:52:35

标签: c# asp.net

我在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();
    }
}

它工作正常,将取代每一次出现,但问题是它会破坏一些行,一些文本和代码将被混淆,页面无法正常加载。有时它会在某些地方添加一些奇怪的字符串! 问题在哪里?

0 个答案:

没有答案