从我的 Visual Studio 调试器运行 MVC4 网站时遇到问题,如果打开的页面太多,ajax 请求需要很长时间才能开始发送。非常奇怪的是,如果我关闭其中一个页面,请求就会立即启动。
更多细节... 框架:MVC 4 IDE:Visual Studio 2010 浏览器:IE 9/Chrome
控制器:
[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 个浏览器窗口时成功请求的屏幕截图。
这是我的请求标头的捕获
这是我的响应标头的捕获
这是我的时间记录
我不能真正理解的主要事情是为什么有一个 46 秒的等待期,然后是两个开始期。似乎第一次开始时间很长,而第二次开始发生在我关闭第五个浏览器窗口时。
我试图提供尽可能多的细节以及数据来帮助诊断正在发生的事情。如果我还能做些什么来画出更好的画面,请随时发表评论。任何建议都将受到欢迎。
谢谢你们!