1

我正在调查 Microsoft 的反向 AJAX 示例,其中他们在 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. 如果这成为基于 WAS 的 WCF 服务,#2 中的任何内容会发生变化吗?

4

1 回答 1

1

AsyncPostBackTimeout 值的单位是秒,所以 5 表示 5 秒,当然我们不需要 5 秒等待回调。ExecutionTimeout 属性指示请求在被 ASP.NET 自动关闭之前允许执行的最大秒数。默认值为 110 秒。仅当元素中的调试属性设置为 false 时,此超时才适用。

•当执行时间过长时,以下 javascript 似乎无法运行

你怎么知道执行时间太长了?

1.影响这段代码执行的正确IIS设置和.js回调是什么?

对于此示例,我们不需要 IIS 中的特殊设置。只有网络问题可能导致执行超时。

我很困惑你为什么要专注于超时,当你使用我的样本时你有没有得到未处理的异常?

杰瑞翁 - MSFT

于 2011-04-25T05:27:23.307 回答