2013-08-01 104 views
3

從Visual Studio調試器運行MVC4網站時出現問題,如果頁面打開太多,ajax請求需要很長時間才能開始發送。非常奇怪的是,如果我關閉其中一個頁面,請求將立即開始。ajax請求很長的「等待」時間MVC4

更多詳細信息... 框架:MVC 4 IDE:Visual Studio 2010中 瀏覽器:IE 9 /鉻

控制器:

[Authorize] 
[SessionState(SessionStateBehavior.Disabled)] 
public class AnalyticsController 
    : Controller 
{   
    public ActionResult SaveWorkspace(Workspace model) 
    { 
     var returnVal = _save(model); 
     return Json(new { actionResult = returnVal, messages = new string[] {} }); 
    } 
} 

我與既有AsyncController和繼承試過這種從Controller獲得相同的結果。

客戶:

$.ajax({ 
    url: '/Analytics/SaveWorkspace', 
    type: "POST", 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify(workspace), 
    success: function (result) { 
     alert("Function Executed"); 
    } 
}); 

以上是Ajax調用我使用。我所做的是點擊我的網頁上的各種鏈接,這將打開新的窗口。對於我的測試,我從調試器打開了初始瀏覽器,並從主頁打開了其他5個瀏覽器。上面的調用立即從我的調試器啓動的窗口執行,但是當我查看來自網絡捕獲的請求時,它會說「等待」,直到它最終超時。

現在有趣的部分是,如果我關閉任何一個窗口,我產生的請求將從掛起更改並轉到我的控制器並按預期返回。多玩一會兒,如果我再試一次(不打開額外的瀏覽器),它會立即發送到服務器,但如果我打開第5個瀏覽器,則會再次變慢。我做了各種測試以確保特定窗口沒有任何問題,它似乎是導致我的請求不被髮送的5個瀏覽器的幻數。

以下是我關閉第5個瀏覽器窗口時成功請求的屏幕截圖。 Success

這裏是我的請求頭的捕捉 enter image description here

這裏是我的響應頭的捕捉 enter image description here

這裏是我的計時 enter image description here

最主要的捕獲我不明白爲什麼有46秒的等待期,然後是兩個開始期。看起來第一個啓動階段是長期的,第二個啓動階段發生在我關閉第五個瀏覽器窗口時。

我試圖提供儘可能多的細節以及數據以幫助診斷正在發生的事情。如果有什麼我可以做的,以繪製更好的圖片,隨時發表評論。任何建議都會受到歡迎。

謝謝大家!

+0

你沒有真正解釋這個'_save(model)'方法在你的控制器動作中實際做了什麼。爲了進一步調試這個問題,我將首先通過虛擬化控制器操作並擺脫這種'_save'調用。你現在可以觀察到同樣的行爲嗎?如果不是,那麼顯然這個問題出現在'_save'方法中。如果是的話,那麼,這很奇怪。另外你怎麼可能使用IE來做Web開發?嘗試使用網絡瀏覽器,而不是IE瀏覽器。 –

+0

我不相信這是_save(模型),因爲它甚至沒有提出這一點,因爲請求正在等待。如果我要刪除這些代碼,我仍然會遇到同樣的問題。 – mvcNewbie

回答

2

您可能會遇到單個域的最大連接數限制,即IE8中的最大連接數爲6。 (See here for details。)我不確定IE9,但由於沒有關於它的新聞稿,我會認爲它沒有改變。根據這個SO post,Chrome也是6。你的6個瀏覽器窗口是否有任何長時間運行的請求打開,這可能會阻止第7個Ajax調用?

同樣的SO帖子中說Firefox的連接限制是8,所以也許你可以嘗試運行該應用程序,看看問題是否仍然存在。

+0

非常感謝您對Polly的投入,您對這個問題頭痛不已。現在我知道問題是什麼了,在我的代碼中,如何處理這個問題已經很明顯了。再次感謝! – mvcNewbie

0

我看到以下原因:你在代碼的某處有斷點。可能是在JavaScript中(關閉瀏覽器請求後馬上去)。因此,請禁用您的斷點,或者如果它不能幫助嘗試暫停調試器來查看正在發生的事情。

+0

我確認在我的調試器中沒有設置斷點,並且遇到同樣的問題。 – mvcNewbie

+0

你使用什麼服務器? Iis,iis express,webdev? –

0

我知道problem with IE 8 debugging,我不知道它是否也適用於IE 9,但它也涉及到多個打開的窗口/選項卡。試一試。

+0

我已經使用Chrome進行了測試,並且遇到了同樣的問題。 – mvcNewbie