asp.net - ASP Response.Flush() 刷新部分数据

标签 asp.net iis flush

我正在开发一个带有 ASP 服务器端的 Web 应用程序,并使用 iframe 进行数据推送。

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() 发送整个数据 block 。 有人知道如何正确使用 Response.Flush() 吗?

谢谢!

查尔斯

最佳答案

我的一位同事解决了这个问题。 IIS 上启用了 Gzip 压缩,这会阻止 Web 浏览器获取完整的数据 block 。

解决方案包括:

禁用所有网站的压缩:

对于 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在您的应用程序文件中,添加行 <urlCompression doStaticCompression="true" doDynamicCompression="false"/><system.webServer>部分下.

对特定网页或特定请求禁用压缩

这些好人找到了一种方法:

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

关于asp.net - ASP Response.Flush() 刷新部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024580/

相关文章:

asp.net - 将列添加到 AspNetUsers 表

asp.net - 根据 DropDownList 的值动态启用或禁用RequiredFieldValidator

php - 为什么404或其他自定义IIS错误页面中的POST数组为空?

java - ServletResponse#flushBuffer() 包括什么?

linux - 如何丢弃原始套接字中的传入数据包?

asp.net - Request.ServerVariables ["HTTP_X_FORWARDED_FOR"] 和 Request.Headers ["X-Forwarded-For"] 之间有区别吗?

c# - 如何使用 Web 平台安装程序为 Web 应用程序创 build 置

IIS - 401.3 - 未经授权

asp.net - 在脚本中安装 ASP.NET + SQL Express

python - 打印出 os.popen() 的输出而不在 python 中缓冲