Веб-роль Azure, получающая результаты длительного процесса - PullRequest
0 голосов
/ 26 сентября 2011

Моя веб-роль Azure использует Ajax для вызова функции (в default.aspx.cs), которая делегирует работу рабочим ролям. Рабочие роли могут занимать до 30-40 минут в зависимости от выбранного пользователем входного файла. Если рабочие роли быстро возвращают результат, он получает веб-роль и правильно отображается на веб-странице. Если это займет много времени, результаты все равно будут получены веб-ролью (попытка печати отследить), но на веб-странице ничего не отобразится.

Я чувствую, что есть какое-то время, которое убивает связь между кодом ajax на странице и веб-ролью.

Код выглядит так:

    <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 ]

2 голосов
/ 27 сентября 2011

Балансировщик нагрузки Azure уничтожает все неактивные соединения через 1 минуту. См. Мой ответ на этот вопрос о том, как обойти эту проблему.

0 голосов
/ 26 сентября 2011

Я бы попытался переопределить значение тайм-аута по умолчанию для jquery , чтобы посмотреть, поможет ли это:

$.ajaxSetup({
  timeout: 3600000 // one hour
});

Эта проблема может быть вызвана jquery, но также может зависеть от настроек браузера и сети, как указано в этом вопросе SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...