SharePoint: ошибка при отмене регистрации EventReceiver формы ContentType

У меня есть некоторые проблемы с отменой регистрации некоторых приемников событий, формирующих тип контента. Тип контента и получатели были развернуты и зарегистрированы мной, поэтому я не пытаюсь удалить встроенные или внутренние приемники событий MOSS.

Я пытаюсь заархивировать это с помощью следующего фрагмента кода:

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()" выдает исключение, сообщающее, что коллекция не может быть изменена. Как вы можете видеть в коде, я уже пытался решить эту проблему разными способами, например разрешением небезопасных обновлений или выполнением этого кода с повышенными привилегиями. Но я всегда получаю одно и то же исключение.

Так что я делаю не так?

3 ответа

Решение

Ваша проблема в том, что свойство "AvailableContentTypes" возвращает вам коллекцию READ-ONLY.

Вам также следует использовать свойство ContentTypes, и все должно быть в порядке.

С Уважением,

Выкопанные.

Вы должны быть в состоянии установить type.ReadOnly = false включить запись в тип.

Кроме того, ваш SPWeb не нужно утилизировать - см . Блог Роджера Лэмба здесь для более подробной информации.

Тип основан на типе публикации? У меня были проблемы с изменением этих типов. В противном случае вы можете попробовать изменить весь SchemaXml этого типа. Я обнаружил, что это иногда работает, когда другие методы этого не делают.

Другие вопросы по тегам