سؤال

لغز غامض، لكنه يقودني إلى الجنون تمامًا:

أقوم بإنشاء سياسة إدارة معلومات مخصصة في MOSS.لقد قمت بتطبيق IPolicyFeature، وميزة السياسة الخاصة بي تسجل نفسها بكل سرور عن طريق تكوين SPItemEventReceiver جديد.تعمل جميع العناصر الجديدة في مكتبتي على تنشيط الأحداث كما ينبغي، ويعمل كل شيء بشكل جيد.

لدى IPolicyFeature أيضًا طريقة ProcessListItem، والتي من المفترض أن تطبق السياسة بأثر رجعي على العناصر الموجودة بالفعل في المكتبة (على الأقل، من المفترض أن تفعل ذلك طالما استمرت في العودة true).إلا أنه لا.إنها تطبق السياسة فقط على أولاً عنصر في المكتبة، وليس لدي أي فكرة على الإطلاق عن السبب.

لا يبدو أنه يطرح استثناءً، وهو حقًا يعود صحيحًا من معالجة العنصر الأول، ولا أستطيع التفكير في ما يجب النظر إليه أيضًا.أي واحد؟

يحرر:إجابة كوري أدناه وضعتني على المسار الصحيح.كان هناك شيء آخر يفشل بالفعل - لم أعرف ما هو، نظرًا لأن Windbg-fu الخاص بي ليس كما ينبغي، لكنني أظن أنه كان شيئًا مثل "تعديل مجموعة أثناء تكرارها".كان الكود الخاص بي يعدل SPListItem الذي تم تمريره إلى ProcessListItem، ثم يستدعي SystemUpdate عليه؛بمجرد أن قمت بتغيير الكود بحيث قام بإنشاء متغير خاص به (يشير إلى نفس SPListItem بالضبط) واستخدمه، اختفت المشكلة...

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

المحلول

لا يوجد سوى بضعة أشياء يمكنني التفكير في تجربتها.أولاً، هل تقوم بالتطوير في المربع الذي قد تتمكن فيه من استخدام Visual Studio لتصحيح الأخطاء؟لذلك مجرد التنقل من خلال ذلك.

بافتراض أن الأمر ليس كذلك - ما سأفعله هو تشغيل WinDBG وإرفاقه بالعملية قبل تسجيل السياسة مباشرةً.قم بتشغيل استثناءات الفرصة الأولى بحيث تنقطع عند حدوثها.يمكنك القيام بذلك عن طريق إصدار الأمر "sxe clr" بمجرد اختراقه.إليك المزيد من المعلومات حول WinDBG:

http://blogs.msdn.com/tess/archive/2008/06/05/setting-net-breakpoints-in-windbg-for-applications-that-crash-on-startup.aspx

ما سأفعله بعد ذلك هو مشاهدة استثناءات "الفرصة الأولى" التي سيتم طرحها، وإجراء !PrintException لمعرفة ما يحدث.أعتقد أن هناك استثناءً تم طرحه في مكان ما يتسبب في توقف التطبيق عن معالجة العناصر الأخرى.

كيف يبدو المنطق الخاص بـ ProcessListItem الخاص بك؟هل حاولت القيام بإرجاع صحيح للتأكد من أنه يعمل؟

نصائح أخرى

بعض الأفكار الجميلة هناك، وذلك بفضل.لم يكن مصحح أخطاء Visual Studio يُظهر استثناءً (ولقد قمت بتغليف كل شيء في كتل المحاولة/الالتقاط فقط في حالة حدوث ذلك)، لكنني لم أفكر في تجربة Windbg...

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