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 этого типа. Я обнаружил, что это иногда работает, когда другие методы этого не делают.