我之前发布了一个类似的问题,但没有得到任何回复,所以我试图让它更具体(经过大量测试后我已经能够做到这一点)。我不会继续推动,但这是一个阻碍,让我发疯。
我有一个 MVC3 应用程序。在其中我有一个包含以下两种方法的测试控制器:
public ActionResult Test2()
{
return View();
}
public ActionResult Test2Get()
{
System.Threading.Thread.Sleep(270000);
var x = "Author = x";
return Json(x,JsonRequestBehavior.AllowGet);
}
Test2 视图如下:
@{
ViewBag.Title = "Test2";
}
<h2>Test2</h2>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: 'http://www.lp-web.net/Test/Test2Get',
type: 'GET',
success: function (result) { alert('success'); }
});
});
</script>
正如您所看到的,Test2 视图只是在“加载”时对一个休眠 4.5 分钟然后返回一些 JSON 的方法执行回调。
当通过 Azure 模拟器在 VS 中本地运行时,这在所有浏览器上都可以正常工作。如果我构建一个非 Azure 版本并部署到托管服务器,那么这在所有浏览器中都可以正常工作。“工作”是指显示带有“成功”消息的警报。
但是,当部署到 Windows Azure 时,这仅在我使用 Chrome 时才有效。否则警报永远不会出现。
还有其他一些花絮:例如,如果睡眠持续时间设置为 4 分钟或更短,所有浏览器都可以工作,即使应用程序部署到 Azure 也是如此。但我真的不知道这有什么相关性。
我希望有人知道我可以在哪里看。如果有人想亲自尝试,您可以访问http://www.lp-web.net,单击“Test2”操作链接并等待 4.5 分钟。我很想知道是不是“只有我”。
提前感谢您的任何建议。