Question

Il y a la liste présente sur SiteCol1 ootWeb.L'utilisateur n'est pas autorisé sur SiteCol1.Nous sommes donc à l'aide de RWEP.Nous lire que nous avons besoin de créer de nouveaux objets pour le site et web.Cependant, foll.code fonctionne, j'ai besoin de savoir si using (SPWeb rootWeb = site.OpenWeb()) automaticalley appels nouveau mot-clé.

Ou quel est le moyen de créer un nouvel objet de spweb dans ce cas?

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
                        }

                    }
                });
Était-ce utile?

La solution

La raison pour laquelle cela fonctionne est que vous avez déjà créé un nouveau SPSite de l'objet à l'intérieur de la RWEP et donc SPWeb retourner à l'aide de SPWeb rootWeb = site.OpenWeb() correctement donne l'élévation du web.Le problème se produit si vous essayez d'utiliser précédemment créé SPSite ou SPWeb les objets à l'intérieur de la déléguer.Notez que dans votre cas, même SPWeb rootWeb = site.RootWeb il devrait également travailler.Voir ce pour plus d'informations: http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/using-spsite-and-spweb-objects-with-runwithelevatedprivileges-don-t-cross-the-borders.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top