1

タスクを実行するために、Windowsサービスにquartz.netを実装しました。そして、すべてがローカルワークステーションで正常に動作します。ただし、リモートWinサーバーホストにデプロイされると、初期化後にハングします。

ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
var _scheduler = schedFact.GetScheduler();

// Configuration of triggers and jobs
var trigger = (ICronTrigger)TriggerBuilder.Create()
                                          .WithIdentity("trigger1", "group1")
                                          .WithCronSchedule(job.Value)
                                          .Build();

var jobDetail = JobBuilder.Create(Type.GetType(job.Key)).StoreDurably(true)
                                .WithIdentity("job1", "group1").Build();

var ft = _scheduler.ScheduleJob(jobDetail, trigger);

すべてが標準のようです。スケジューラーへのプライベート静的ポインターがあります。ジョブが初期化されてスケジューラーに追加された直後に、ロギングプロセスが停止します。その後は何も起こりません。アドバイスをいただければ幸いです。

ありがとう。

PS:

quartz.netによると、イベントビューアmbでいくつかの奇妙なイベントが見つかりました。

Restart Manager - Starting session 2 - ‎2012‎-‎07‎-‎09T15:14:15.729569700Z.
Restart Manager - Ending session 2 started ‎2012‎-‎07‎-‎09T15:14:15.729569700Z.
4

2 に答える 2

2

あなたの質問とあなたがコメントで与えた追加情報に基づいて、私はあなたのサービスのonStartメソッドに何か問題があると思います。

問題を理解して解決するためにできることがいくつかあります。

  1. onStartメソッドのtry/catchブロックにコードを配置し、サービスのインストールと開始を試みます。次に、Windowsログをチェックして、正しくインストールされているか、正しく起動されているかなどを確認します。
  2. リスタートマネージャが実行されているという事実は、あなたのサービスがすでに使用されているプロセスに依存している可能性があると私に信じさせます。サービスをインストールする前に、サービスの依存関係がすべて閉じられていることを確認してください。
  3. この問題は、onStartメソッドにデータ集約型または長時間実行の操作を入れることによっても発生する可能性があります。この種のコードをonStartに含めないようにしてください。
于 2012-07-11T12:48:49.233 に答える
0

これと同様の問題があり、アセンブリ名にドット/ピリオドが含まれていることが原因でしたProject.Update.Service。私がそれに変更したとき、ProjectUpdateServiceそれはうまくいきました。

不思議なことに、それは常に開発マシンで動作しました。リモートマシンでは絶対に使用しないでください。

更新:この問題の原因はサービスの長さである可能性があります。ドットを削除することで、サービス名を短くしました。最大長は25文字のようです。

于 2017-02-12T17:43:11.710 に答える