长时间运行Ajax请求阻止短Ajax状态更新

时间:2015-05-07 13:50:35

标签: javascript ajax iis

我有一个在IIS上运行的ASP.NET MVC应用程序。我有以下处理程序/ DoWork(假设它需要10分钟)和/ ReportStatus(假设它需要< 1s)。当ReportStatus返回工作进度时,DoWork完成工作。

我想通过从Javascript上运行$ .ajax请求来异步运行/ DoWork,然后通过在window.setInterval中注册的函数中包含的异步$ .ajax反复查询/ ReportStatus来监视其进度。但是,我所看到的是,/ DoWork上长时间运行的$ .ajax会阻止/ ReportStatus上的所有其他查询,直到DoWork完成为止。

我如何规避这个?我猜这与IIS服务器设置有关,可能会拒绝来自一个主机的两个活动请求?有什么想法吗?

我的第一个想法是让/ DoWork在后台异步线程中运行实际工作并立即返回。但是我想知道是否有更好的选项,因为我想在/ DoWork运行期间保持连接打开。

1 个答案:

答案 0 :(得分:0)

按照colecmc的建议使用WebSockets结束。由于我不想依赖Windows 8+ / Windows 2012+,我选择了名为Fleck的轻量级实现(可在Nuget上使用)。

http://jxs.me/2011/05/28/csharp-websockets-with-fleck/