Pregunta

Hay una lista presente en SiteCol1 ootWeb.El usuarioA no tiene permiso en SiteCol1.Entonces estamos usando RWEP.Leemos que necesitamos crear nuevos objetos para el sitio y la web.Sin embargo, sigue.El código funciona, necesito saber si using (SPWeb rootWeb = site.OpenWeb()) automáticamente llama a una nueva palabra clave.

¿O cuál es la forma de crear un nuevo objeto de spweb en este 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
                        }

                    }
                });
¿Fue útil?

Solución

La razón por la que esto funciona es que ya has creado un nuevo SPSite objeto dentro del RWEP y por lo tanto SPWeb devuelto usando SPWeb rootWeb = site.OpenWeb() Da correctamente la web elevada.El problema ocurre si intentas utilizar archivos creados previamente. SPSite o SPWeb objetos dentro del delegado.Tenga en cuenta que en su caso incluso SPWeb rootWeb = site.RootWeb También debería funcionar.Vea esto para más información: http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/using-spsite-and-spweb-objects-with-runwithelevatedprivileges-don-t-cross-the-borders.aspx

Licenciado bajo: CC-BY-SA con atribución
scroll top