سؤال

لدي بعض المشكلات غير المسجلة في بعض EventReceives تشكل ContentType. تم نشر المحتوى والمستقبلات والمستجمويات من قبل نفسي، لذلك لا أحاول إزالة أي أحداث مدمجة أو احتياطية داخلية أو داخلية.

أحاول أرشفة هذا مع مقتطف التعليمات البرمجية التالية:

using (SPSite site = new SPSite("http://wssdev06/"))
        {
            using (SPWeb web = site.RootWeb)
            {
                // web.AllowUnsafeUpdates = true;

                SPContentType type = web.AvailableContentTypes[<ContentTypeName>];

                while (type.EventReceivers.Count > 0)
                {
                    type.EventReceivers[0].Delete();                        
                }

                type.Update();

                // web.AllowUnsafeUpdates = false;
            }
        }

لسوء الحظ، يلقي الأمر "type.update ()" استثناء يخبرني أنه لا يمكن تعديل المجموعة. كما ترون في التعليمات البرمجية لقد جربت بالفعل أشياء مختلفة لحل هذه المشكلة، كما يسمح بتحديثات غير آمنة أو تشغيل هذا الرمز مع امتيازات مرتفعة. لكنني دائما أحصل على نفس الاستثناء.

إذا ما الخطأ الذي أفعله؟

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

المحلول

مشكلتك هي أن خاصية "availableConttypes" ترجع لك يقرأ فقط مجموعة.

يجب عليك أيضا استخدام خاصية "ContentTypes"، يجب أن يكون كل شيء على ما يرام.

يعتبر،

حفرت.

نصائح أخرى

هل النوع يستند إلى نوع النشر؟ كان لدي مشاكل في تغيير هذه الأنواع. وإلا فقد تحاول تغيير تغيير schemaxml بأكملها من النوع. لقد وجدت أن هذا يعمل في بعض الأحيان عندما لا توجد طرق أخرى لا.

يجب أن تكون قادرا على تعيين type.ReadOnly = false لتمكين الكتابة إلى النوع.

كذلك، لا يحتاج Spweb الخاص بك إلى التخلص منه - انظر مدونة روجر لامب هنا لمزيد من التفاصيل.

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