2

IIS7 に登録されたカスタム モジュールを使用して ASP.NET アプリケーションを実行しています。

2 日前までは、すべて正常に動作していました。ここで、要求が AuthenticateRequest 状態と WindowsAuthentication モジュールでハングし始めたことに気付きました。私のカスタム モジュールは、BeginRequest 状態でインターセプトして要求を処理し、HttpContext.Current.ApplicationInstance.CompleteRequest() を使用して要求処理を完了します。処理されない要求は、IIS に残され、他のモジュールを介して処理されます。

問題 (リクエストのハング) は、カスタム モジュールが処理しないページで発生します。

この問題のトラブルシューティングを開始する必要があるアイデアはありますか? 今日、3 台の異なるマシンでこの問題を一貫して再現しました。また、先月、web.config ファイルを変更していないこともわかりました。

この問題のトラブルシューティングに関するヘルプは大歓迎です。

前もって感謝します, チャールズ・プラカシュ・ダサリ

4

1 に答える 1

0

最後に、私の問題の解決策を見つけました。

私が実装したカスタム モジュールは、非同期ハンドラーを使用します。

        context.AddOnBeginRequestAsync(
            new BeginEventHandler(BeginBeginRequest),
            new EndEventHandler(EndBeginRequest)
        );

私のモジュールがリクエストを処理しない場合、begin イベント ハンドラはリクエストを完了し、何もしません。数日前まで、Begin メソッドでこれらのリクエストを処理するために別のスレッドにジャンプしていましたが、最近、モジュールがリクエストを処理する必要がある場合にのみ別のスレッドにジャンプするように修正しました。これで問題が発生しました。どうやら IIS は、私が同じスレッドで処理を完了することを好まないようです。

だから今、私は再び別のスレッドにジャンプします-何があっても。IIS は問題なく動作し、アプリがハングすることはなくなりました。

さらに調査して、なぜこれが発生するのかを確認する必要があります。または、それが本当に IIS のバグなのか、BeginBeginRequest メソッドから IAsyncResult を返す方法のバグなのかを確認する必要があります。しかし今のところ、このリクエストを別のスレッドで処理する必要があることはわかっています。

于 2009-07-14T18:51:49.407 に答える