1

ScriptManager で長いタイムアウトを使用するMicrosoft のリバース AJAX サンプルを調査しています

<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 秒です。このタイムアウトは、要素の debug 属性が false に設定されている場合にのみ適用されます。

•次の JavaScript は、実行に時間がかかりすぎると実行されないように見えます

実行に時間がかかりすぎることをどのように知ることができますか?

1.このコードの実行に影響を与える正しい IIS 設定と .js コールバックは何ですか?

このサンプルでは、​​IIS で特別な設定は必要ありません。ネットワークの問題のみが実行タイムアウトを引き起こす可能性があります。

なぜタイムアウトに焦点を合わせたいのか混乱しています。私のサンプルを使用したときに未処理の例外が発生しましたか?

ジェリー・ウェン - MSFT

于 2011-04-25T05:27:23.307 に答える