Масштабирование Microsoft ASP.NET Reverse AJAX пример "длинного опроса" - PullRequest
1 голос
/ 20 апреля 2011

Я исследую образец обратного AJAX от Microsoft , в котором они используют длинный тайм-аут в ScriptManager

<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="2147483647">

и ManualResetEvent для управления ожиданием:

    private ManualResetEvent messageEvent = new ManualResetEvent(false);
    public Message DequeueMessage()
    {
        // Wait until a new message.
        messageEvent.WaitOne();
    }


    public void EnqueueMessage(Message message)
    {
        lock (messageQueue)
        {
            messageQueue.Enqueue(message);

            // Set a new message event.
            messageEvent.Set();
        }
    }

Я заметил, что

  • Установка AsyncPostBackTimeout в низкое значение (5) не приводит к таймауту или сбою сценария
  • <httpRuntime executionTimeout="5"/> в web.config некажется, что это имеет эффект
  • Следующий javascript не запускается, когда выполнение занимает слишком много времени

       Sys.WebForms.PageRequestManager.getInstance() .add_endRequest(function (sender, args) {
       if (args.get_error() && args.get_error().name === 'Sys.WebForms.PageRequestManagerTimeoutException') {
           alert('Caught a timeout!');
           // remember to set errorHandled = true to keep from getting a popup from the AJAX library itself 
           args.set_errorHandled(true);
          }
         });
    

Что заставляет меня задавать эти вопросы

  1. Какие правильные параметры IIS и обратные вызовы .js влияют на выполнение этого кода?

  2. Какие части инфраструктуры IIS выделяются, когдамасштабируется ли это приложение?

  3. Изменится ли что-нибудь в # 2, если это станет службой WCF на основе WAS?

1 Ответ

1 голос
/ 25 апреля 2011

Единицей значения AsyncPostBackTimeout является секунда, поэтому 5 означает 5 секунд, конечно, нам не нужно 5 секунд для ожидания обратного вызова.Свойство ExecutionTimeout указывает максимальное количество секунд, в течение которых разрешено выполнение запроса до его автоматического закрытия ASP.NET.По умолчанию это 110 секунд.Это время ожидания применяется только в том случае, если для атрибута debug в элементе установлено значение false.

• Следующий javascript не запускается, когда выполнение занимает слишком много времени

Как вы могли знать, что выполнение занимает слишком много времени?

1.Какие правильные настройки IIS и обратные вызовы .js влияют на выполнение этого кода?

Нам не нужны специальные настройки в IIS для этого примера.Тайм-аут выполнения может вызвать только проблема с сетью.

Я запутался, почему вы хотите сосредоточиться на тайм-ауте, вы получили необработанное исключение при использовании моего образца?

Джерри Венг - MSFT

...