jQuery Ajax - 针对 ASP.NET MVC 运行多个请求

Mar*_*son 2 .net ajax asp.net-mvc jquery

我有一个“选项卡式”样式的网页,一旦页面加载,每个选项卡都会触发对其内容的 Ajax 请求(使用 jQuery)。后端是在 Visual Studio 中运行的 ASP.NET MVC,因此只需使用正常的“ASP.NET 开发服务器”来为请求提供服务。我遇到以下问题:

1)请求由 Web 服务器一次处理一个。在第一个请求完成之前,不会处理第二个请求。这是在某种单线程模式下运行的“ASP.NET 开发服务器”吗?我可以让它多线程吗(我应该让它多线程还是会打开一个痛苦的世界?)

2)长时间运行的请求会终止后续请求。鉴于即使我一次触发所有 ajax 请求,请求也一次得到一个服务,为什么有些请求甚至无法到达 Web 服务器?一旦处理了一个很长的请求,就会发生这种情况。例如:

  • 第一个请求(小请求) - 响应正常
  • 第二个请求(大请求)- 响应需要一分钟左右,但确实得到了服务。
  • 第三个请求(小请求) - 请求永远不会到达服务器并且 jQuery 不报告错误。

我曾尝试增加 ajax 超时,但没有成功。


更新: 我在我的代码中发现了一个错误,它混淆了最终请求的 URL,所以看起来这与请求长度和 ajax 超时无关(脸红!)。在此过程中,我发现了有用的 ajaxManager 插件,如果您需要的话,它非常适合排队请求(http://www.protofunc.com/scripts/jquery/ajaxManager/)。另外,感谢关​​于使用 ASP.NET Dev Server 进行测试的有效观点。它确实与IIS大不相同。

MrK*_*ins 5

关于第 1 点,请记住,如果您使用会话状态,则请求将不会同时执行 - ASP.NET 将锁定会话状态,并且一次只处理使用它的每个请求。(有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms178581 中的“并发请求和会话状态”部分)尝试禁用会话状态(如果您当然不使用它!)和看看是否有帮助。