Response.Flush使用Ajax不起作用?

时间:2013-03-04 07:57:41

标签: c# asp.net ajax comet asp.net-4.5

我按照以下示例在ASP.NET 4.5中创建一个非常简单的Comet。 What is the best way of showing progress on an Ajax call?

我还从http://www.aaronlerch.com/blog/2007/07/08/creating-comet-applications-with-aspnet/下载了样本。我没有得到Server的任何回复。

在ASp.NEt 4.5中是否更改了Response.Flush?

更新:只需删除Thread.Sleep,现在一切正常。

1 个答案:

答案 0 :(得分:0)

我认为只是add异步刷新回复

异步刷新回复

  

向HTTP客户端发送响应可能需要相当长的时间   客户端很远或连接带宽很低。一般   ASP.NET缓存响应字节,因为它们是由创建的   应用。 ASP.NET然后执行单个发送操作   在请求处理结束时累积缓冲区。

     
    

如果缓冲响应很大(例如,流式传输大文件)     到客户端),你必须定期调用HttpResponse.Flush发送     缓冲输出到客户端并控制内存使用。     但是,因为Flush是一个同步调用,所以迭代调用     Flush在潜在的持续时间内仍然消耗一个线程     长期运行的请求。

         

ASP.NET 4.5添加了对使用异步执行刷新的支持     HttpResponse类的BeginFlush和EndFlush方法。运用     这些方法,可以创建异步模块和异步     处理程序,可以递增地将数据发送到客户端而不会占用     操作系统线程。在BeginFlush和EndFlush调用之间,     ASP.NET释放当前线程。这大大减少了     为了支持所需的活动线程总数     长时间运行的HTTP下载。