3

HTTP リクエストをリッスンする Windows サービスがあります。これには HttpListener を使用しています。サービスは正常に機能しています。ただし、システムの起動時にサービスが自動的に開始するように設定されている場合、HTTP の初期化に遅延が発生します。HttpListener コンストラクターが返されるまでに 1 ~ 2 分かかります。したがって、ユーザーは正常にログインされ、たとえば、彼のメッセンジャーはすでにオンラインになっています。HttpListener が HTTP.SYS: カーネル モードの http リスナーを使用していることを読んだので、システムが初期化されているため、正常である可能性があります。

私の質問は次のとおりです。1) HttpListener の初期化にこのような遅延があるのは正常ですか? 2) そのような遅延を回避するための回避策はありますか (HttpListener を使用しない場合を除く)?

編集: 問題は Windows 7 では再現されません。Windows XP マシンでのみ再現できました。

4

1 に答える 1

0

回避策を見つけました。

サービスの「OnStartスレッド」からHttpListenerコンストラクターを呼び出していました。コンストラクター呼び出しを別のスレッドに移動し、サービスのOnStartメソッドから戻ると、HttpListenerは通常どおり高速に初期化されます。

なぜそうなのかわかりません。HttpListenerに必要な一部のコンポーネントは、後でシステムの起動時に初期化されると想定することしかできません。

ちなみに、問題はWindows7では再現されていません。私はWindowsXPマシンでしか再現できませんでした。

于 2012-08-24T13:22:01.887 に答える