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

StackOverflow https://stackoverflow.com/questions/591225

Вопрос

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

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

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

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

Это было полезно?

Решение

Ваша проблема заключается в том, что свойство "AvailableContentTypes" возвращает вам ДОСТУПНО ТОЛЬКО ДЛЯ ЧТЕНИЯ Коллекция.

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

С уважением,

Выкопанный.

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top