2011-02-01 76 views
2

我有一个“标签式”样式的网页,一旦页面加载每个标签,都会触发Ajax请求(使用jQuery)。后端是在Visual Studio中运行的ASP.NET MVC,因此只需使用正常的“ASP.NET开发服务器”来处理请求。我遇到以下问题:jQuery Ajax - 针对ASP.NET MVC运行多个请求

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

2)长时间运行的请求会终止后续请求。即使我一次性抛出ajax请求,但为什么某些请求无法到达Web服务器?一旦长期请求得到服务,就会发生这种情况。例如:

  • 1请求(小小的请求) - 响应好
  • 第二请求(大 要求) - 反应需要一分钟或 所以但获得服务。
  • 第三请求 (小请求) - 请求永不 到达服务器和jQuery确实 不报告错误。

我试过增加ajax超时但没有成功。


更新: 我发现在我的代码被搞乱的URL最终请求一个bug,因此它看起来像这样没有任何与请求长度和Ajax超时(脸红! )。一路走来,虽然我找到了有用的ajaxManager插件,如果这是您需要的(http://www.protofunc.com/scripts/jquery/ajaxManager/),那么它非常适合排队请求。另外,感谢您使用ASP.NET Dev Server进行测试的有效观点。它确实与IIS完全不同。

+0

旁注。首先,不要在Capistrano(Visual Studios开发服务器)中测试您的应用程序的性能。它执行许多IIS在生产模式中不能执行的操作。二,第一个请求花费了比其它更多的时间,因为你的项目进行编译(同样也适用于IIS)。 – alexn 2011-02-01 14:13:12

+0

@alexn我认为这是卡西尼 – Omu 2011-02-01 14:28:10

回答

4

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