invalidCERCall MDA

invalidCERCallإدارة التصحيح assهوtant (MDA) هو تنشيط عند وجود هو استدعاء داخل الرسم البياني (CER) لمنطقة تنفيذ مقيدة لأسلوب له لا توجد عقد الثبات أو على اتفاق إفراط ضعيفة. عقد ضعيف هو عقد الذي يقوم بتعريف أن تلف الالولاية الولاية أسوأ من نطاق أكبر من المثيل تمريرها إلى الاستدعاء، وهذا يعني AppDomainأو عملية الولاية احتمال تلف أو ناتجها غير deterministically computable عند استدعاء ضمن CER. دائماً

الأعراض

نتائج غير متوقعة عند تنفيذ تعليمات برمجية في CER. الأعراض غير محددة. قد يكونوا غير متوقع OutOfMemoryException، ThreadAbortException، أو الاستثناءات الأخرى عند الاستدعاء إلى غير موثوق به أسلوب لأنه لم تحضير يتأخر عن الوقت وقت التشغيل أو حمايته من ThreadAbortExceptionالاستثناءات في وقت التشغيل. خطرا أكبر على هو أن أي استثناء الناتجة عن الأسلوب في وقت التشغيل قد المغادرة AppDomainأو المعالجة في الولاية غير مستقرة، حيث هو contrary إلى الهدف CER. سبب CER هو تاريخ الإنشاء هو لتجنب الولاية فساد مثل th هو. أعراض الالولاية تالفة يتم تطبيق محدد لأن تعريف الولاية consهوtent هو مختلفة بين تطبيقات.

السبب

يتم استدعاء تعليمات برمجية داخل CER دالة مع لم مع ضعيف ReliabilityContractAttributeأو ReliabilityContractAttributeأنه غير متوافق مع تشغيل الأداة CER.

في terms of وثوقية اتفاق بناء الجملة, a weak اتفاق هو a اتفاق that does not specify a Consistency قائمة تعداد القيمة أو specifies a Consistency القيمة of MayCorruptProcess, MayCorruptAppDomain, أو None. أي of these conditions indicates that the تعليمات برمجية called may impede the efforts of the غير ذلك تعليمات برمجية في the CER إلى maintain consistent الولاية. CERs allow تعليمات برمجية إلى treat أخطاء في a very deterministic manner, maintaining internal invariants that are important إلى the تطبيق و allowing it إلى متابعة تشغيل في the face of transient أخطاء such كـ خارج-of-ذاكرة استثناءات.

The تنشيط of this MDA indicates a possibility the أسلوب being called في the CER can فشل في a way that the caller did not expect أو that leaves the AppDomain أو عملية الولاية corrupted أو unrecoverable. Of course, the called تعليمات برمجية might ينفذ correctly و the problem هو simply a مفقود اتفاق. ومع ذلك، رمز المشكلات المتضمنة في الكتابة يمكن الاعتماد عليه دقيق وغياب اتفاق مؤشرا جيدا قد لا ينفذ التعليمات البرمجية بشكل صحيح. العقود هي المؤشرات التي تم ترميز بشكل يعتمد عليه المبرمج وأيضا promises ستقوم هذه صريحة لا تغيير المراجعات التعليمة البرمجية في المستقبل. أن هو، العقود تصريحات لهدف وليس فقط تفاصيل التنفيذ.

لأن أي أسلوب ضعيف أو غير موجودة اتفاق يمكن أن تفشل من المحتمل أن يكون بعدة طرق غير متوقعة، لا يحاول إزالة أي فشل غير متوقع خاص به من الطريقة التي يتم تقديمها بواسطة البطيئة JIT-ترجمة، محتوى القاموس عام، وقت التشغيل أو إحباط مسار التنفيذ، على سبيل المثال. التي هو، عندما th هو MDA هو تنشيطه، فهو يشير إلى أن وقت التشغيل لم تقم بتضمينها أسلوب يدعى في CER الذي يتم تعريفه؛ منتهي المكالمة الرسم البياني في ترتيب هو العقدة نظراً للمتابعة لتحضير th هو قد تساعد شجرة فرعية قناع الخطأ المحتملة.

الدقة

إضافة اعتمادية صالح اتفاق إلى دالة أو تجنب استخدام ذلك استدعاء دالة.

التأثير تشغيل وقت التشغيل

قد يكون تأثير استدعاء عقد ضعيف من CER الفشل CER إلى إتمام العمليات الخاصة بها. قد يؤدي هذا إلى تلف AppDomainعملية الالولاية.

الإخراج

يلي هو نموذج الإخراج من القيم بالموضع هو MDA.

Method 'MethodWithCer', while executing within a constrained execution region, makes a call at IL offset 0x000C to 'MethodWithWeakContract', which does not have a sufficiently strong reliability contract and might cause non-deterministic results.

التكوين

<mdaConfig>
  <assistants>
    <invalidCERCall />
  </assistants>
</mdaConfig>

راجع أيضًا:

المرجع

PrepareMethod

System.Runtime.ConstrainedExecution

المبادئ

تشخيص الأخطاء مع المساعدين التصحيح مدارة