2017-10-17 24 views
0

ぼんやりしたWebジョブを作成しました。私は1分ごとに実行するようにスケジュール設定:Azure webjobは常に「実行中」

0 */1 * * * * 

この問題は、ステータスが「成功」に変更されないということであるコード

var host = new JobHost(); 
Console.WriteLine("Starting program..."); 
var unityContainer = new UnityContainer(); 
unityContainer.RegisterType<ProgramStarter, ProgramStarter>(); 
unityContainer.RegisterType<IOutgoingEmailRepository, OutgoingEmailRepository>(); 
unityContainer.RegisterType<IOutgoingEmailService, OutgoingEmailService>(); 
unityContainer.RegisterType<IDapperHelper, DapperHelper>(); 

//var game = unityContainer.Resolve<IOutgoingEmailRepository>(); 
var program = unityContainer.Resolve<ProgramStarter>(); 
program.Run().Wait(); 
Console.WriteLine("All done...."); 

host.RunAndBlock(); 

です。私は間違っているのですか?変更する必要があるアプリの設定は次のとおりです。また、私はそれはあなたがKUDUであなたのwebkjobログをチェックすることができ

enter image description here

+1

'host.RunAndBlock()'を使用すると、ジョブが決して終了しないことが保証されます。この行を削除してみてください。 – Thomas

+1

タイムアウトのために失敗に変わったことはありますか? – Nick

+1

こんにちは、今更新は? –

答えて

2

を終了したことがないので、それがあると信じて、それだけで、初めてを実行していることに気づきました。

RunAndBlockのシナリオで上記のジョブを使用する場合、ジョブは連続している必要があります。つまり、プロセスは常に実行されます。

明らかに、Trigger webjobではなくContinuousを使用しています。 RunAndBlockメソッドはここでは使用できません。

WEBJOBS_IDLE_TIMEOUT - 秒での時間は、後に我々はそれが、アイドルであります何のCPU時間または(のみトリガジョブ用) 出力を持っていない場合 ランニングは、ジョブのプロセスをトリガー中止します。また

、私はあなたが.IT 100000WEBJOBS_IDLE_TIMEOUTを設定していることに気づくことは、それがアイドルでいたときに、あなたのwebjobが長時間停止したことがないですように、値が大きすぎるようです。あなたはまた、設定の名前がそうのようなstopping_wait_timeあるsettings.jobファイルに(秒単位)を指定することにより、ジョブの猶予期間を変更することができ

{ "stopping_wait_time": 60 } 

詳細、ご参照ください。これにはdoc

お手伝いします。

+0

実際、不連続なWebJobに対して 'RunAndBlock'を呼び出すべきシナリオはありません。あなたのシナリオではWebJobs SDKをまったく使用する必要はありません。メインからのあなたの仕事をしてください。ホストを使用しないでください。 –

+1

私はこの問題を解決する方法だと思っているので、これを答えとしてマークしました。 Tho、私は問題がコードの行に関連していることを発見しました(program.Run()の内部):Console.ReadLine()。愚かな誤り。それがアプリが決して終わらなかった理由です。 – Flezcano

関連する問題