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
                        }

                    }
                });
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top