Pergunta

Não há lista presente no SiteCol1 ootWeb.O usuário não tem permissão SiteCol1.Por isso estamos usando RWEP.Lemos que precisamos para criar novos objetos para o site e web.No entanto, foll.código funciona, eu preciso saber se using (SPWeb rootWeb = site.OpenWeb()) automaticalley chamadas de nova palavra-chave.

Ou qual é o caminho para se criar o novo objecto de spweb neste caso?

SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                    using (SPSite site = new SPSite(SPContext.Current.Site.WebApplication.Sites[0].RootWeb.Url))
                    {
                        using (SPWeb rootWeb = site.OpenWeb())
                        {
                           //code to fetch data from list present in root web
                        }

                    }
                });
Foi útil?

Solução

A razão pela qual isso funciona é que você já tenha criado um novo SPSite objeto dentro do RWEP e, portanto, SPWeb retornados usando SPWeb rootWeb = site.OpenWeb() dá correctamente a elevada web.O problema acontece se você tentar usar o criado anteriormente SPSite ou SPWeb objetos dentro do delegado.Observe que, no seu caso, mesmo SPWeb rootWeb = site.RootWeb também deve funcionar.Veja este para mais informações: http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/using-spsite-and-spweb-objects-with-runwithelevatedprivileges-don-t-cross-the-borders.aspx

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