2012-06-13 35 views
3

我正在開發一個帶有ASP服務器端的Web應用程序,並使用iframe進行數據推送。ASP Response.Flush()刷新部分數據

的ASP處理程序刷新每隔一段時間一些JavaScript來的iframe:

context.Response.Write("<script language='javascript'>top.update('lala');</script>"); 
context.Response.Flush(); 

我的問題是,有時,當我收到的數據,我沒有得到全文。 例如,我將收到此:<script language='javascript'>update('lala');</ 不幸的是,這可以防止在下一秒內沒有其他數據出現時執行JavaScript代碼。

我有一個解決方法是每500毫秒有一個線程沖洗'..........'。 (然後我會收到script>......這將完成我的javascript。)

但是我確定必須有一種方法讓Response.Flush()發送整個數據塊。 有人有關於如何正確使用Response.Flush()的想法嗎?

謝謝!

Charles

回答

3

我的一位同事發現了這個問題。 IIS上啓用了Gzip壓縮,這阻止了Web瀏覽器獲取完整的數據塊。

的解決方案包括:

所有網站禁用壓縮:

對於IIS 5.1,去Control Panel/Administrative Tools/Internet Information Services。右鍵單擊Web Sites,單擊properties並刪除ISAPI篩選器Compression

對於IIS 7,請轉至My Documents/IISExpress/config/applicationHost.config並更改零件httpCompression,以便您的特定頁面不會啓用壓縮。只爲您的網站

禁用壓縮:

web.config文件您的應用程序,添加部分下<system.webServer><urlCompression doStaticCompression="true" doDynamicCompression="false"/>

特定網頁或特定請求禁用壓縮

這些好人找到一種方法來做到這一點:

Can gzip compression be selectively disabled in ASP.NET/IIS 7?