2016-10-25 14 views
1

私はWCFサーバーをホストするWindowsサービスを持っています。 次のプロパティを設定するには、 "sc config ...."と "sc failure ..."を使用しました。 1)ログオン資格情報 - ローカルユーザー 2)回復 - 最初の2回の失敗に対してサービスを再開してからプログラムを実行する(.batまたは.cmd)wcf windows service recovery program

私はサービスをクラッシュさせるいくつかの方法でテストしようとしましたが、復旧には蹴られませんでした。 私はタスクマネージャーtaskkilを介して、コード内で例外をスローし、ゼロで除算してみました...

何も起こらない - 再起動もプログラムの実行もありません。 アイデア

+0

サービスを終了させるには、Environment.Exit(1);を使用してください。 –

+0

Tomさん、ありがとうございました。サービス開始時とリクエスト後に試してみましたが失敗してクラッシュしましたが、回復は蹴られる。私は "ローカルシステムアカウント"とユーザーアカウントを使用してみましたが、プログラムは特定のフォルダと "system32"フォルダにもあります。 –

答えて

1

私はwcfサービスが含まれているサービスからスレッド内に生成され、あなたが期待しているように子スレッドの例外のためにメインスレッドが終了していないと思います。

See this article.

この例外は メインスレッドと異なるスレッド上でスローされているので、私はのAppDomainのUnhandledException イベントをサブスクライブする必要があります。私がこれをしなければ、スレッドはただ静かに死ぬでしょうし、 サービスは、私が望むものではありません。

+0

Rossさんに感謝します。これで問題は解決しました。サービスを再開できますが、まだプログラムを実行することはできません。 私は.batファイルと.cmdファイルを実行しようとしましたが、私はforcedos.exeとそのファイルをパラメータとして使うべきであることを見ました。 –

+0

独自のサービスアプリケーションを作成し、wfcホストをインスタンス化していますか? –

+0

はい、うまくいくようですが、まだ問題に直面しています。スクリプトがファイルを削除すると、私はそれを見ます。しかし、私がcmd.exeを起動すると(たとえば)、タスクマネージャで表示されますが、画面には表示されません。 –