1

おそらくMSDTCに関連する、ローカルなものであることがわかっている問題があります(私はそれについてあまり知りません)。

他のプロジェクト開発者 (同じコードベース、コミットされたすべて) がソリューション全体を実行しますが、データベースからデータを取得しようとすると (常にではありません)、次のエラーが発生します。

The underlying provider failed on EnlistTransaction.


   at System.Data.EntityClient.EntityConnection.EnlistTransaction(Transaction transaction)
   at System.Data.Objects.ObjectContext.EnsureConnection()
   at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
   at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
   at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__0[TResult](IEnumerable`1 sequence)
   at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
   at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
   at System.Linq.Queryable.First[TSource](IQueryable`1 source, Expression`1 predicate)

using transaction スコープ、complete() などすべてをコメントすると、期待どおりに動作します。

以前にこの問題が発生したことがありますか?

編集:

このエラーをスローするクエリは、次のような非常に単純なものです。

var entity = Entities.EntityX.First(p => p.ID == id);

編集、解決済み:

サーバーの lmhosts が古くなっています。

4

1 に答える 1

2

ファイアウォール ルールが DTC ポートをブロックしているのではないでしょうか? または、一部の DTC ポートを許可し、他のポートを許可しない不完全なファイアウォール ルールですか? 分散トランザクションがファイアウォールを介してうまく機能するようになったことは一度もありません。指示に従っても。

于 2009-12-04T19:37:19.680 に答える