Criação de site novo objeto ou OpenWeb faz isso automaticamente para RWEP
-
10-12-2019 - |
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
}
}
});
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