Response.Flush - 经典ASP中的OnFlush事件?

时间:2009-09-07 14:37:51

标签: asp-classic event-handling url-rewriting

我需要在DLL无法更改的网页上重写域名。 我想如果在页面上发生Response.Flush之前有OnFlush之类的事件,我可以在页面显示之前完成所有操作。有没有办法在ASP中执行此操作?

感谢您的帮助。

P.S。:这个APACHE扩展名中的Script_OnFlush:http://www.apache-asp.org/events.html


根据Nick的建议,我创建了一个继承自Stream类的类。 Response.Filter正在使用此类来处理HTML内容......

通过覆盖Write方法,我设法重写了网站上的域名。

    public override void Write(byte[] buffer, int offset, int count) 
    {
     byte [ ] data = new byte [ count ];
    Buffer.BlockCopy ( buffer, offset, data, 0, count );

    string myHTML = ASCIIEncoding.ASCII.GetString(data);
    string convertedHTML = myHTML.Replace("http://www.previousdomain.com", "http://www.currentdomain.com");

    data = ASCIIEncoding.ASCII.GetBytes(convertedHTML);

     _sink.Write ( data, 0, count );

    }

谢谢尼克!

1 个答案:

答案 0 :(得分:1)

是的,您可以重载R esponse.Filter属性,该属性充当对返回给浏览器的所有内容的过滤器。您应该在PostReleaseRequestState中的Global.asax中执行此操作。