私は自己ホスト型の WCF サービスを持っています (Windows サービス内で実行されます)。このサービスは、MSMQ でメッセージをリッスンします。このサービスは PerCall であり、Windows 2008 R2、.NET 4.0、MSMQ 5.0 で実行されるトランザクションです。
数週間に 1 回、サービスはメッセージの処理を停止します。Windows サービスは引き続き実行されますが、WCF サービスホスト自体は停止します。次の例外で servicehost が失敗します。
タイムスタンプ: 3/21/2015 5:37:06 PM メッセージ: HandlingInstanceID: a26ffd8b-d3b4-4b89-9055-4c376d586268 タイプ 'System.ServiceModel.MsmqException' の例外が発生し、キャッチされました。-------------------------------------------------- ------------------------------- 2015/03/21 13:37:06 タイプ: System.ServiceModel.MsmqException、システム.ServiceModel、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089 メッセージ: キューからメッセージを受信中にエラーが発生しました: トランザクションの操作シーケンスが正しくありません。(-1072824239、0xc00e0051)。MSMQ がインストールされ、実行されていることを確認します。キューが受信できることを確認してください。ソース: System.ServiceModel ヘルプ リンク: ErrorCode: -1072824239 データ: System.Collections.ListDictionaryInternal TargetSite: Boolean TryReceive(System.TimeSpan, System.
特定の例外 (「トランザクションの操作シーケンスが正しくありません」) を検索しても、多くの情報は得られません。また、障害が発生したサービスを修復する方法に関するほとんどの提案は、障害が発生したイベント内でサービスホストを再起動することです。
私はそれを行うことができますが、この例外の既知の修正可能な原因があること、および/またはそれを処理するためのよりクリーンな方法があることを願っています。