Azure Web角色接收来自漫长过程的结果

时间:2011-09-26 16:23:39

标签: ajax azure

我的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>

2 个答案:

答案 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