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);
}
谢谢尼克!
是的,您可以重载R esponse.Filter
属性,该属性充当所有返回给浏览器的内容的过滤器。您应该在PostReleaseRequestState
中的Global.asax
中执行此操作。
这不是关于ASP的吗?例如,不是asp.net,而是经典asp。 – svinto 2009-09-07 18:55:29
不是,ASP.NET,if你不想使用Global.asax,你可以使用IHttpModule接口创建你自己的模块 – 2009-09-08 02:20:02
感谢Nick,但我需要在经典的ASP中以某种方式做到这一点 – 2009-09-08 07:58:22
经典或.NET ASP? – AnthonyWJones 2009-09-08 07:37:51
经典,我很害怕。 :( – 2009-09-08 07:53:35
这些DLL是从ASP页面调用的ISAPI扩展,过滤器或COM组件? – AnthonyWJones 2009-09-08 13:47:12