我按照以下示例在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,现在一切正常。
答案 0 :(得分:0)
我认为只是add异步刷新回复
异步刷新回复
向HTTP客户端发送响应可能需要相当长的时间 客户端很远或连接带宽很低。一般 ASP.NET缓存响应字节,因为它们是由创建的 应用。 ASP.NET然后执行单个发送操作 在请求处理结束时累积缓冲区。
如果缓冲响应很大(例如,流式传输大文件) 到客户端),你必须定期调用HttpResponse.Flush发送 缓冲输出到客户端并控制内存使用。 但是,因为Flush是一个同步调用,所以迭代调用 Flush在潜在的持续时间内仍然消耗一个线程 长期运行的请求。
ASP.NET 4.5添加了对使用异步执行刷新的支持 HttpResponse类的BeginFlush和EndFlush方法。运用 这些方法,可以创建异步模块和异步 处理程序,可以递增地将数据发送到客户端而不会占用 操作系统线程。在BeginFlush和EndFlush调用之间, ASP.NET释放当前线程。这大大减少了 为了支持所需的活动线程总数 长时间运行的HTTP下载。