SharePoint: erreur sur un récepteur désinscription d'un événement ContentType
-
09-09-2019 - |
Question
J'ai des problèmes certains EventReceivers la désinscription forment un contenttype. Les contenttype et les récepteurs ont été déployés et enregistrés par moi-même donc je ne cherche pas à supprimer tous les MOSS intégrés ou EventReceivers internes.
J'essaie d'archiver ce avec l'extrait de code suivant:
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;
}
}
Malheureusement, la commande « type.Update () » lève une exception en me disant que la collection ne peut pas être modifiée. Comme vous pouvez le voir dans le code que je l'ai déjà essayé différentes choses pour résoudre ce problème, en permettant des mises à jour dangereuses ou d'exécuter ce code avec des privilèges élevés. Mais je reçois toujours la même exception.
Alors qu'est-ce que je fais mal?
La solution
Votre problème est que la propriété "AvailableContentTypes" vous renvoie un READ-ONLY collection.
Vous devez également utiliser la propriété 'ContentTypes', tout ans devrait bien se passer.
Cordialement,
Dug.
Autres conseils
Le type basé sur un type d'édition? J'ai eu des problèmes de modifier ces types. Sinon, vous pouvez essayer de changer l'ensemble SchemaXml du type. J'ai trouvé que cela fonctionne parfois lorsque les autres méthodes ne sont pas.
Vous devriez être en mesure de mettre en type.ReadOnly = false
pour permettre l'écriture du type.
De plus, votre SPWeb n'a pas besoin d'être disposé - voir le blog de Roger Lamb ici pour plus de détails.