سؤال

هل هذا سؤال صحيح؟لدي تطبيق .NET Windows يستخدم MSTDC وهو يطرح استثناءً:

System.Transactions.TransactionManagerCommunicationException:تم تعطيل الوصول إلى الشبكة لإدارة المعاملات الموزعة (MSDTC).يرجى تمكين DTC للوصول إلى الشبكة في تكوين الأمان لـ MSDTC باستخدام الأداة الإدارية لخدمات المكونات ---> System.Runtime.InterOpservices.Comexception (0x8004d024):قام مدير المعاملات بتعطيل دعمه لمعاملاته عن بُعد/الشبكة.(استثناء من HRESULT:0x8004d024) في system.transactions.oletx.idtcproxyshimfactory.receivetransaction (UINT32 ProfgationTokensize ، byte [] propgationToken ، intPtr ManagedIdentifier ، Guid & TransactionIdaIder ، OletxTransactionLationlelationLivel & arsidevel ،

تتبعت دليل Kbalertz لتمكين MSDTC على جهاز الكمبيوتر المثبت عليه التطبيق، ولكن الخطأ لا يزال يحدث.

كنت أتساءل عما إذا كانت هذه مشكلة في قاعدة البيانات؟إذا كان الأمر كذلك، كيف يمكنني حلها؟

لا يوجد حل صحيح

نصائح أخرى

استخدم هذا لنظامي التشغيل Windows Server 2008 r2 وWindows Server 2012 R2

  1. انقر يبدأ, ، انقر يجري, ، يكتب com.dcomcnfg ثم انقر فوق نعم لفتح خدمات المكونات.

  2. في شجرة وحدة التحكم، انقر للتوسيع خدمات المكونات, ، انقر فوق لتوسيع أجهزة الكمبيوتر, ، انقر فوق لتوسيع جهاز الكمبيوتر الخاص بي, ، انقر فوق لتوسيع منسق المعاملات الموزعة ثم انقر فوق DTC المحلية.

  3. انقر على اليمين DTC المحلية وانقر ملكيات لعرض خصائص DTC المحلية صندوق المحادثة.

  4. انقر على حماية فاتورة غير مدفوعة.

  5. علامة الاختيار "الوصول إلى شبكة DTC" خانة الاختيار.

  6. وأخيرا علامة الاختيار "السماح بالوارد" و "السماح بالصادرة" خانات الاختيار.

  7. انقر يتقدم, نعم.

  8. سوف تظهر رسالة حول إعادة التشغيل الخدمة.

  9. انقر نعم و هذا كل شيء.

مرجع : https://msdn.microsoft.com/en-us/library/dd327979.aspx

ملحوظة: في بعض الأحيان قد يقطع جدار حماية الشبكة الموجود على الكمبيوتر المحلي أو الخادم اتصالك، لذا تأكد من إنشاء قواعد لذلك "السماح بالوارد" و "السماح بالصادرة" اتصال ل C:\Windows\System32\msdtc.exe

هل تحتاج حتى إلى MSDTC؟غالبًا ما يكون سبب التصعيد الذي تواجهه هو إنشاء اتصالات متعددة داخل TransactionScope واحد.

إذا كنت في حاجة إليها فأنت بحاجة إلى تمكينه كما هو موضح في رسالة الخطأ.على إكس بي:

  • انتقل إلى الأدوات الإدارية -> خدمات المكونات
  • قم بتوسيع خدمات المكونات -> أجهزة الكمبيوتر ->
  • انقر بزر الماوس الأيمن -> خصائص -> علامة التبويب MSDTC
  • اضغط على زر تكوين الأمان

لقد وجدت أن أفضل طريقة لتصحيح الأخطاء هي استخدام أداة Microsoft التي تسمى DTCPing

  1. انسخ الملف إلى كل من الخادم (DB) والعميل (خادم التطبيق/جهاز الكمبيوتر العميل)
    • ابدأ تشغيله على الخادم والعميل
    • في الخادم:املأ اسم كمبيوتر العميل netbios وحاول إعداد اتصال DTC
    • أعد تشغيل كلا التطبيقين.
    • عند العميل:املأ اسم كمبيوتر الخادم netbios وحاول إعداد اتصال DTC

لقد واجهت عددًا كبيرًا من المشكلات في شبكة شركتنا القديمة، ولدي بعض النصائح:

  • إذا تلقيت رسالة الخطأ "فشل Gethostbyname"، فهذا يعني أن الكمبيوتر لا يمكنه العثور على الكمبيوتر الآخر من خلاله اسم نتبيوس.يمكن للخادم على سبيل المثال حل المشكلة واختبار اتصال العميل، ولكن هذا يعمل على مستوى DNS.ليس على مستوى بحث netbios.سيؤدي استخدام خوادم WINS أو تغيير LMHOST (القذر) إلى حل هذه المشكلة.
  • إذا تلقيت رسالة الخطأ "تم رفض الوصول"، فإن إعدادات الأمان غير متطابقة.يجب عليك مقارنة علامة تبويب الأمان الخاصة بـ msdtc والتأكد من تطابق الخادم والعميل.شيء آخر يجب النظر إليه هو RestrictRemoteClients قيمة.اعتمادًا على إصدار نظام التشغيل لديك، والأهم من ذلك، حزمة الخدمة، يمكن أن تختلف هذه القيمة.
  • مشاكل الاتصال الأخرى:
    • يجب أن يسمح جدار الحماية بين الخادم والعميل بالاتصال عبر المنفذ 135.والأهم من ذلك أنه يمكن بدء الاتصال من كلا الموقعين (واجهت الكثير من المشكلات مع موظفي جدار الحماية في شركتي لأنهم افترضوا أن الخادم فقط هو الذي سيفتح اتصالاً بهذا المنفذ)
    • يقوم البروتوكول بإرجاع منفذ عشوائي للاتصال به من أجل اتصالات المعاملات الحقيقية.لا يحب العاملون في جدار الحماية ذلك، فهم يحبون تقييد المنافذ بنطاق معين.يمكنك تقييد إنشاء منفذ RPC الديناميكي على نطاق معين باستخدام المفاتيح كما هو موضح في كيفية تكوين تخصيص منفذ RPC الديناميكي للعمل مع جدران الحماية.

من خلال تجربتي، إذا كان DTCPing قادرًا على إعداد اتصال DTC يبدأ من العميل ويبدأ من الخادم، فلن تعد معاملاتك هي المشكلة بعد الآن.

يمكن أن نرى أيضا هنا حول كيفية تشغيل MSDTC من Services.msc بلوحة التحكم.

على الخادم الذي يتواجد فيه الزناد ، تحتاج إلى تشغيل خدمة MSDTC.يمكنك ذلك بالنقر فوق ابدأ > الإعدادات > لوحة التحكم > الأدوات الإدارية > الخدمات.ابحث عن الخدمة التي تسمى "منسق المعاملات الموزعة" وانقر بزر الماوس الأيمن (على ذلك وحدد)> ابدأ.

يجب تمكين MSDTC على كلا النظامين، كل من الخادم والعميل.
تأكد أيضًا من عدم وجود جدار حماية بين الأنظمة التي تمنع RPC.
DTCTest هو تطبيق صغير لطيف يساعدك على استكشاف أي مشاكل أخرى وإصلاحها.

@ دان،

ألا أحتاج إلى تمكين MSDTC من أجل المعاملات؟

المعاملات الموزعة فقط - تلك التي تتضمن أكثر من اتصال واحد.تأكد بشكل مضاعف من أنك تفتح اتصالاً واحدًا فقط ضمن المعاملة ولن يتصاعد الأمر - سيكون الأداء أفضل بكثير أيضًا.

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