問題タブ [system.transactions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - System.Transactions の未処理の例外により、ネットワークが不安定なときに Windows サービスが停止する
NServiceBus.Host.exeホスト プロセスを使用して、NServiceBus ベースのサービスを実行しています。
過去数か月間に 2 回、Windows サービスが突然停止し、アプリケーション イベント ログに次のイベントが記録されました。
アプリケーション: NServiceBus.Host.exe フレームワーク バージョン: v4.0.30319 説明: 未処理の例外のため、プロセスが終了しました。例外情報: System.InvalidOperationException スタック: System.Transactions.TransactionState.ChangeStatePromotedPhase0(System.Transactions.InternalTransaction) で System.Transactions.Phase0VolatileDemultiplexer.InternalPrepare() で System.Transactions.VolatileDemultiplexer.PoolablePrepare(System.Object) で System.Transactions .Oletx.OletxVolatileEnlistment.Prepare(System.Transactions.Oletx.Oletx.OletxVolatileEnlistmentContainer) で System.Transactions.Oletx.OletxPhase0VolatileEnlistmentContainer.Phase0Request(Boolean) で System.Transactions.Oletx.OletxTransactionManager.ShimNotificationCallback(System.Object, Boolean) で System.Threading。 _ThreadPoolWaitOrTimerCallback.
このエラーは、ネットワークが不安定な状態が数分間続いたときに発生しました (たとえば、log4net ログ ファイルに表示されるデータベースに対する多数のタイムアウト)。
ここで何が失敗しているのかについてのアイデアはありますか?
log4net ログファイルに致命的なエラーはありません。
バージョン:
- Windows Server 2008 R2
- .NET フレームワーク 4.5.2
- NServiceBus 4.7.5
- NHibernate 3.3.3.4001 (サガ、サブスクリプション、およびタイムアウトの永続化に使用)
- SQL Server 2012
.net - Cross-AppDomain 呼び出し後に Transaction.Current が null になるのはなぜですか?
次の小さなプログラムを考えてみましょう。単純にTransactionScope, 印刷を作成し、Transaction.Current別の AppDomain のメソッドを呼び出し (実行に時間がかかります)、戻ったときに印刷Transaction.Currentします。
まったく予想外に、プログラムは次の出力を生成します。
TransactionScopeAsyncFlowOptionの ctor をTransactionScopeに変更するとTransactionScopeAsyncFlowOption.Suppress、トランザクションは呼び出し後に残ります。
私の疑いでは、論理コンテキスト全体のトランザクション スコープ フローは、リモーティング呼び出し全体に伝播される CallContext によって処理され、使用されるキーは継承MarshalByRefObjectされ、どのキーにも登録されていないためISponsor、プロキシは最初のリース時間の後に切断されます。そして、呼び出しから戻ると、論理呼び出しコンテキストが元のコンテキストにマージされます。つまり、トランザクションは存在しなくなります。
この問題を回避する方法を探しています。また、これが .NET のバグと見なされる場合は?
visual-studio-2017 - エラー CS0234 タイプまたは名前空間名 'Transactions' が名前空間 'System' に存在しません (アセンブリ参照がありませんか?)
VS2015 から VS2017 Professional にアップグレードしたところ、VS2015 で正常にビルドされていたソリューションが、次のエラーで VS2017 でビルドできなくなりました。
エラー CS0234: 型または名前空間名 'Transactions' が名前空間 'System' に存在しません (アセンブリ参照がありませんか?)
System.Transactions のリファレンスを見ると、正しい場所を指しています
誰かがこの問題を解決しましたか?