Das Erstellen eines neuen Site-Objekts oder von OpenWeb erfolgt automatisch für RWEP
-
10-12-2019 - |
Frage
Auf SiteCol1 \ RootWeb ist eine Liste vorhanden.BenutzerA hat keine Berechtigung für SiteCol1.Also benutzen wir RWEP.Wir haben gelesen, dass wir neue Objekte für Site und Web erstellen müssen.Jedoch, foll.code funktioniert, ich muss wissen, ob using (SPWeb rootWeb = site.OpenWeb())
automatisch ruft neues Schlüsselwort auf.
Oder wie kann man in diesem Fall ein neues Objekt von spweb erstellen?
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
}
}
});
Lösung
Der Grund, warum dies funktioniert, ist, dass Sie bereits ein neues erstellt haben SPSite
objekt innerhalb des RWEP und damit SPWeb
zurückgegeben mit SPWeb rootWeb = site.OpenWeb()
korrekt gibt die erhöhte Bahn.Das Problem tritt auf, wenn Sie versuchen, zuvor erstellte zu verwenden SPSite
oder SPWeb
objekte innerhalb des Delegaten.Beachten Sie, dass in Ihrem Fall sogar SPWeb rootWeb = site.RootWeb
sollte auch funktionieren.Sehen Sie dies für weitere Informationen: http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/using-spsite-and-spweb-objects-with-runwithelevatedprivileges-don-t-cross-the-borders.aspx