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 事务范围、complete() 和所有内容,它会按预期工作。

你以前有过这个问题吗?

编辑:

引发此错误的查询非常简单,例如:

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

编辑,解决:

服务器的 lmhosts 已过时。

4

1 回答 1

2

防火墙规则阻止 DTC 端口,也许?或者不完整的防火墙规则允许某些 DTC 端口,但不允许其他端口?我从来没有让分布式事务通过防火墙很好地工作。即使按照指示

于 2009-12-04T19:37:19.680 回答