我有一个“选项卡式”样式的网页,页面加载后,每个选项卡都会对其内容触发 Ajax 请求(使用 jQuery)。后端是在 Visual Studio 中运行的 ASP.NET MVC,因此只需使用普通的“ASP.NET 开发服务器”来处理请求。我遇到以下问题:
1) 网络服务器一次处理一个请求。在第一个请求完成之前,不会处理第二个请求。这是在某种单线程模式下运行的“ASP.NET 开发服务器”吗?我可以让它成为多线程吗(我应该让它成为多线程还是这会打开一个痛苦的世界?)
2) 长时间运行的请求会杀死后续请求。即使我一次发出所有 ajax 请求,但每次都会为这些请求提供服务,为什么某些请求会这样做甚至无法到达网络服务器?一旦长请求得到服务,就会发生这种情况。例如:
- 第一个请求(小请求)- 回复好
- 第二个请求(大 请求) - 响应需要一分钟或 所以但确实得到了服务。
- 第三个请求 (小请求)- 永不请求 到达服务器并且 jQuery 完成 不报告错误。
我尝试增加ajax超时但没有成功。
更新: 我在我的代码中发现了一个错误,它弄乱了最终请求的 URL,因此看起来这与请求长度和 ajax 超时无关(脸红!)。一路上,我发现了有用的 ajaxManager 插件,如果您需要的话,它非常适合排队请求(http://www.protofunc.com/scripts/jquery/ajaxManager/)。另外,感谢您提供有关使用 ASP.NET Dev Server 进行测试的有效观点。它确实与IIS有很大不同。
最佳答案
关于第 1 点,请记住,如果您使用 session 状态,则请求将不会同时执行 - ASP.NET 将锁定 session 状态,并且每次只处理使用它的每个请求。 (有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/ms178581 中的“并发请求和 session 状态”部分)尝试禁用 session 状态(当然,如果您没有使用它!)并查看是否有帮助。
关于.net - jQuery Ajax - 针对 ASP.NET MVC 运行多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4863510/