我的Azure Web角色使用Ajax来调用将工作委派给工作者角色的函数(在default.aspx.cs中)。根据用户选择的输入文件,辅助角色最多可能需要30-40分钟。如果工作者角色快速返回结果,则会由webrole接收并在网页上正确显示。如果需要很长时间,webrole仍然会收到结果(尝试打印到跟踪),但网页上没有显示任何内容。
我觉得有一些时间可以杀死页面上的ajax代码和webrole之间的联系。
代码如下:
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnSubmit").click(function () {
var params = '{ map1 : "' + document.getElementById('<%=ddlMap1.ClientID %>').value + '",' +
'map2 : "' + document.getElementById('<%=ddlMap2.ClientID %>').value + '",' +
'op : "' + document.getElementById('<%=ddlOperator.ClientID %>').value + '"}';
$('#spinner').show();
$('#results').text('');
$.ajax({
type: "POST",
url: "Default.aspx/Overlay",
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var dmsg = '';
if (msg == null) {
dmsg = 'null';
} else {
dmsg = msg.d;
}
$('#spinner').hide();
$('#results').text(dmsg);
},
error: function (error) {
$('#results').text('');
}
});
});
});
</script>
答案 0 :(得分:2)
天蓝色负载平衡器在1分钟后终止任何非活动连接。请参阅我对this question的回答,了解如何解决此问题。
答案 1 :(得分:0)
我会尝试覆盖default timeout value of jquery以查看它是否有帮助:
$.ajaxSetup({
timeout: 3600000 // one hour
});
此问题可能是由jquery引起的,但也取决于browser and network settings as stated in this SO question。