سؤال

لدي مشكلة أعرفها هي شيء محلي، مرتبط بنطاق المعاملات، وربما MSDTC (لا أعرف الكثير عن ذلك).

يقوم مطور المشروع الآخر (SAME BECKBASE، كل شيء ملتزم به) ينفذ الحل بأكمله، ولكن عندما أحاول الحصول على بعض البيانات من قاعدة البيانات (ليس دائما)، لدي الخطأ التالي:

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)

إذا قمت بتعليق النطاق باستخدام المعاملات، أكمل () وكل شيء، فإنه يعمل كما هو متوقع.

هل سبق لك أن كانت هذه المشكلة من قبل؟

تعديل:

الاستعلام الذي يلقي هذا الخطأ هو شيء بسيط للغاية، مثل:

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

تحرير، حلها:

LMHOSTS الخادم قد عفا عليها الزمن.

هل كانت مفيدة؟

المحلول

قواعد جدار الحماية حظر منافذ DTC، ربما؟ أو قاعدة جدار حماية غير مكتملة تسمح ببعض منافذ DTC، ولكن ليس غيرها؟ لم أكن أبدا معاملات موزعة للعمل بشكل جيد من خلال جدار الحماية. حتى بعد اتباع الاتجاهات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top