Domanda

C'è una lista presente su SiteCol1 \ rootweb.Usera non ha il permesso su SiteCol1.Quindi stiamo usando RWEP.Leggiamo che dobbiamo creare nuovi oggetti per sito e web.Tuttavia, il foll.Codice funziona, ho bisogno di sapere se using (SPWeb rootWeb = site.OpenWeb()) Automaticley chiama nuova parola chiave.

o qual è il modo per creare un nuovo oggetto di SPWeb in questo 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
                        }

                    }
                });
.

È stato utile?

Soluzione

Il motivo per cui questo funziona è che hai già creato un nuovo oggetto SPSite all'interno del RWep e quindi SPWeb restituito utilizzando SPWeb rootWeb = site.OpenWeb() correttamente dà il web elevato.Il problema avviene se si tenta di utilizzare gli oggetti SPSite in precedenza creato o SPWeb all'interno del delegato.Si noti che nel tuo caso anche SPWeb rootWeb = site.RootWeb dovrebbe funzionare anche.Vedi questo per ulteriori informazioni: http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/USHUSING-SPSSITE-And-SPWeb-objects-with-RunwiteLevatedPrivileges-DON-T-Cross-the-Borders.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top