3

IIS で Windows サービスをホストし、Windows 上で実行されているようにそのサービスを実行し続けるにはどうすればよいですか? WCF サービスの機能を使用できますか?

私は Windows 自体にはアクセスできず、IIS にしかアクセスできません。そのサービス内で、スケジュールされた時間にデータを処理するスレッドを作成します。

4

2 に答える 2

5

要するに、できません。

より詳細な答えは、2 つの問題があるということです。

  1. IIS ワーカー プロセスは、HTTP 要求が着信したときにのみ起動されます。これは、システムでサービスを開始できないことを意味します。
  2. IIS ワーカー プロセスは、いくつかの条件でリサイクル (再起動) されます。たとえば、HTTP 要求が長時間来ない場合、ワーカー プロセスは再起動されます。これは、アプリケーション プールのリサイクル構成にアクセスできない限り、サービスをシャットダウンするタイミングを制御できないことを意味します。リサイクル ロジックは、保留中のすべての HTTP 要求が完了することを保証するだけであり、すべてのバックグラウンド スレッドが完了するまで待機しないことに注意してください。

この方法で部分的な解決策を得ることができます:

  1. 実行時間の長いスレッドが生きているかどうかを確認し、生きていない場合は開始する WCF サービス メソッドを作成します。
  2. そのメソッドを定期的に (5 秒に 1 回) 呼び出す非常に単純なWindows サービスを作成します。自分のマシンなど、どこかにサービスを展開します。

残っている唯一の質問は、Windows サービスを本当に避ける必要があるかということです。サービスをホストする場所を見つけることができますか? Windows サービスが最善の方法、または唯一の方法でさえあるユース ケースがいくつかあります。

于 2013-05-08T15:30:00.603 に答える