SiteCol1 ootWeb上有列表。UserA没有对SiteCol1的许可。所以我们使用的是RWEP。我们读到我们需要为site和web创建新对象。然而,foll。代码工作,我需要知道如果 using (SPWeb rootWeb = site.OpenWeb()) automaticalley调用new关键字。

或者在这种情况下创建spweb的新对象的方法是什么?

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
                        }

                    }
                });
有帮助吗?

解决方案

这样做的原因是你已经创建了一个新的 SPSite rwep内部的对象,因此 SPWeb 通过使用返回 SPWeb rootWeb = site.OpenWeb() 正确地给出了提升的幅材。如果您尝试使用以前创建的问题会发生 SPSiteSPWeb 委托内的对象。请注意,在你的情况下,甚至 SPWeb rootWeb = site.RootWeb 也应该工作。有关更多信息,请参阅此: http://blogs.technet.com/b/sharepointdevelopersupport/archive/2013/03/13/using-spsite-and-spweb-objects-with-runwithelevatedprivileges-don-t-cross-the-borders.aspx

许可以下: CC-BY-SA归因
scroll top