Response.Flush - 传统ASP中的OnFlush事件?

问题描述:

我需要重写由无法更改的DLL提供的网页上的域名。 我认为如果在页面上发生Response.Flush之前发生了像OnFlush这样的事件,我可以在页面显示之前完成所有事件。有没有办法在ASP中做到这一点?Response.Flush - 传统ASP中的OnFlush事件?

感谢您的帮助。

P.S:事情是Script_OnFlush在这个APACHE扩展:http://www.apache-asp.org/events.html


继我创建了从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); 

    } 

谢谢尼克!

+0

经典或.NET ASP? – AnthonyWJones 2009-09-08 07:37:51

+0

经典,我很害怕。 :( – 2009-09-08 07:53:35

+0

这些DLL是从ASP页面调用的ISAPI扩展,过滤器或COM组件? – AnthonyWJones 2009-09-08 13:47:12

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

+0

这不是关于ASP的吗?例如,不是asp.net,而是经典asp。 – svinto 2009-09-07 18:55:29

+0

不是,ASP.NET,if你不想使用Global.asax,你可以使用IHttpModule接口创建你自己的模块 – 2009-09-08 02:20:02

+0

感谢Nick,但我需要在经典的ASP中以某种方式做到这一点 – 2009-09-08 07:58:22