4

シナリオ:

  • クライアントは、IIS 7.5 サーバーへの POST を使用して ISAPI 呼び出しを行います。この呼び出しにより、ミッション クリティカルな出力が生成され、多数のユーザーに配布されます。(この場合、Indy 9 HTTP クライアントで Delphi XE を使用);
  • ISAPI プロセスが完了するまでに長い時間がかかります (クライアント側でスレッド化されています)。
  • POST 呼び出しが戻る前に、ユーザーが中止するかクライアント マシンがダウンし、クライアント側の接続が切断され、IIS 7.5 サーバーで ISAPI プロセスが処理されたままになります。

質問:

  • IIS 7.5 は、クライアント/ユーザーが接続を中止して強制終了したときにまだ実行されているそのスレッドに対して何をしますか?
  • クライアントが切断された場合でも、サーバー側のスレッドは処理を完了しますか? それとも、IIS 7.5 がそのスレッドをある時点で強制終了し、おそらく中止されたプロセスに混乱が残るでしょうか?
  • これは時間に依存しますか? サーバー側のプロセスが完了するまでにかかる時間に依存しますか?
  • これを制御できますか? クライアントが中止された場合でも、IIS にプロセスを完了するように指示できますか? もしそうなら、どのように?
4

1 に答える 1

3

IIS は、完了するまで、またはアプリケーション プールのタイムアウトに達するまで処理を続けます。

Indy の TIdHTTPServer の使用を検討してから、サーバー側を制御して、IIS AppPool 管理の専門家になる代わりに、長く切断された可能性のあるクライアント セッションを処理する方法について独自のルールを設定できるようにします。

于 2011-05-20T17:51:15.603 に答える