asp.net 4.0 で実行時間の長いワークフローを 1 つ作成しました。
この WF は 1 回開始され、停止することはありません。このワークフローを Web アプリケーションから開始しました。Global.asax では、
protected void Application_Start(object sender, System.EventArgs e)
{
var LicClient = new WFService.LicWFClient();
LicClient.StartWorkFlow();
}
データベース トランザクションにコード アクティビティを使用しました。
補充の処理 - 何らかの理由で保留になっているリクエストを確認し、要件が完全に満たされているかどうかを確認し、有効な場合は次に進み、そうでない場合は再度保留します。それに関する通知メールを送信します。
LicenseRequest - 有効な要求を確認します。
Sleep 30 Sec - スレッドを 30 秒間スリープさせます。
リクエストに応じて処理 - リクエストに応じて処理し、それに関する通知メールを送信します。
Sleep 1 Min - スレッドを 1 分間スリープさせます。
私にとっては問題なく動作しますが、サーバー上でいくつかの問題が発生します。
- しばらくするとワークフローが停止します
- これは毎日起こるわけではありません。そのため、手動で開始します。
エラー :
コンテキストは現在、エンティティを追跡していません。パラメーター名: System.Data.Services.Client.DataServiceContext.UpdateObject のエンティティ (オブジェクト エンティティ)、LicenseWF.SaveLicenseData.Execute (CodeActivityContext コンテキスト) のエンティティ
- これは有効なリクエストで発生しますが、すべてではなく、2 日で 1 つ取得されます。
何かアイデアがあれば、私に提案してください。前もって感謝します...