2009-09-07 39 views
0

我需要重寫由無法更改的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

回答

1

是的,您可以重載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