Pergunta

Eu tenho alguns problemas Unregistering alguns EventReceivers formar uma contenttype. O tipo de conteúdo e os receptores foram implantados e registrados por mim para que eu não tente remover qualquer MOSS built-in ou EventReceivers internos.

I tentar arquivar isso com o seguinte trecho de código:

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

Infelizmente, a "type.Update ()" comando lança uma exceção dizendo-me que a coleção não pode ser modificado. Como você pode ver no código Eu já tentei coisas diferentes para resolver este problema, como permitir atualizações inseguras ou executar esse código com privilégios elevados. Mas eu sempre obter a mesma exceção.

Então, o que estou fazendo de errado?

Foi útil?

Solução

Seu problema é que os "AvailableContentTypes" propriedade retorna um SOMENTE LEITURA coleção.

Você também deve usar a propriedade 'ContentTypes', ans tudo deve estar bem.

Saudações,

Dug.

Outras dicas

É o tipo baseado em um tipo de publicação? Eu tive problemas mudando esses tipos. Caso contrário, você pode tentar mudar todo o SchemaXml do tipo. Eu descobri que isso às vezes funciona quando outros métodos não.

Você deve ser capaz de type.ReadOnly = false set para habilitar a gravação no tipo.

Como assim, seu SPWeb não precisa ser descartado - veja blog de Roger Lamb aqui para mais detalhes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top