2011-02-01 30 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中的'併發請求和會話狀態'一節)嘗試禁用會話狀態(如果您當然不使用它)並查看是否有幫助。