2009-02-26 5 views
3

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

Так что я делаю неправильно?

ответ

6

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

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

С уважением,

Dug.

0

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

0

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

Кроме того, ваш SPWeb не нужно размещать - см. Roger Lamb's blog here для получения более подробной информации.

+0

Thx для наконечника больше не использовать RootWeb. – Flo

Смежные вопросы