2013-08-01 102 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