Cannot convert from ‘anonymous method’ to ‘Microsoft SharePoint SPSecurity CodeToRunElevated’

Ainda falando sobre o método Run With Elevated Privileges, o erro Cannot convert from ‘anonymous method’ to ‘Microsoft.SharePoint.SPSecurity.CodeToRunElevated’ ocorre frequentemente com os desenvolvedores. O problema geralmente se deve a uma chamada interna de return da função.

Exemplo:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
     using (SPSite site = new SPSite(web.Site.ID)
     {
         // seu código
         return site;
     }

});

A solução é simples retire as chamadas return de dentro do método RunWithElevatedPrivileges.

Modo correto:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID)
    {
        // seu código
    }

});
return site;

A explicação técnica desse erro é devido ao fato do método RunWithElevatedPrivileges herdar a interface IDisposable(). Por isso a chamada de um return iria evitar a disposição do método e o método continuaria na memória podendo ocasionar problemas.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>