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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top