2009-02-26 4 views
3

Ich habe einige Probleme beim Aufheben der Registrierung einiger EventReceiver von einem ContentType. Der Inhaltstyp und die Empfänger wurden von mir selbst bereitgestellt und registriert, so dass ich nicht versuche, eingebaute oder interne Event-Receiver von MOSS zu entfernen.SharePoint: Fehler beim Aufheben der Registrierung eines EventReceivers von einem ContentType

ich dies mit dem folgenden Code-Schnipsel zu archivieren versuchen:

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; 
      } 
     } 

wirft leider eine Ausnahme mit dem Befehl „type.Update()“ mir zu sagen, dass die Sammlung nicht geändert werden kann. Wie Sie im Code sehen können, habe ich bereits verschiedene Dinge ausprobiert, um dieses Problem zu lösen, indem Sie unsichere Updates erlauben oder diesen Code mit erhöhten Rechten ausführen. Aber ich bekomme immer die selbe Ausnahme.

Also, was mache ich falsch?

Antwort

6

Ihr Problem ist, dass die Eigenschaft "AvailableContentTypes" Ihnen eine READ-ONLY Sammlung zurückgibt.

Sie sollten auch die Eigenschaft 'ContentTypes' verwenden, und alles sollte in Ordnung sein.

Grüße,

gegraben.

0

Basiert der Typ auf einem Veröffentlichungstyp? Ich habe Probleme gehabt, diese Typen zu ändern. Andernfalls könnten Sie versuchen, das gesamte SchemaXml des Typs zu ändern. Ich habe festgestellt, dass dies manchmal funktioniert, wenn andere Methoden dies nicht tun.

0

Sie sollten type.ReadOnly = false aktivieren können, um das Schreiben in den Typ zu aktivieren.

Auch Ihr SPWeb muss nicht entsorgt werden - siehe Roger Lamb's blog here für weitere Details.

+0

Danke für den Tipp, das RootWeb nicht mehr zu entfernen. – Flo

Verwandte Themen