我需要在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 );
}
谢谢尼克!
答案 0 :(得分:1)
是的,您可以重载R esponse.Filter
属性,该属性充当对返回给浏览器的所有内容的过滤器。您应该在PostReleaseRequestState
中的Global.asax
中执行此操作。