SharePoint: ошибка при отмене регистрации EventReceiver формы ContentType - PullRequest
3 голосов
/ 26 февраля 2009

У меня возникли проблемы с отменой регистрации некоторых получателей событий из типа контента. Тип контента и получатели были развернуты и зарегистрированы мной, поэтому я не пытаюсь удалить встроенные или внутренние приемники событий 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 ]

6 голосов
/ 27 февраля 2009

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

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

С уважением,

Выкопанные.

0 голосов
/ 27 февраля 2009

Вы должны иметь возможность установить type.ReadOnly = false, чтобы разрешить запись в тип.

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

0 голосов
/ 27 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...