Domanda

Ho alcuni problemi di annullamento della registrazione alcuni EventReceivers formano un ContentType. I contenttype ei ricevitori sono stati schierati e registrati da me così io non cerco di togliere qualunque built-in o EventReceivers interni Moss.

I cercando di archiviare questo con il seguente frammento di codice:

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

Purtroppo la "type.Update ()" il comando genera un'eccezione che mi diceva che la raccolta non può essere modificato. Come si può vedere nel codice ho già provato diverse cose per risolvere questo problema, nel senso che consente aggiornamenti non sicuri o l'esecuzione di questo codice con privilegi elevati. Ma ho sempre la stessa eccezione.

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Il problema è che la proprietà "AvailableContentTypes" si restituisce un Sola lettura di raccolta.

Si dovrebbe anche utilizzare la proprietà '' ContentTypes, ans tutto dovrebbe andare bene.

Saluti,

Dug.

Altri suggerimenti

è il tipo basato su un tipo di pubblicazione? Ho avuto problemi cambiando quei tipi. In caso contrario, si potrebbe provare a cambiare l'intero SchemaXml del tipo. Ho trovato che questo a volte funziona quando altri metodi non lo fanno.

Si dovrebbe essere in grado di impostare type.ReadOnly = false per abilitare la scrittura del tipo.

Come pure, il vostro SPWeb non ha bisogno di essere smaltiti - vedere blog di Roger Lamb qui per ulteriori dettagli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top