Создание нового объекта сайта или OpenWeb делает это автоматически для RWEP

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/96208

  •  10-12-2019
  •  | 
  •  

Вопрос

Список присутствует на SiteCol1 ootWeb.У пользователя нет разрешения на SiteCol1.Итак, мы используем RWEP.Мы читаем, что нам нужно создать новые объекты для сайта и веб-страницы.Однако, фолл.код работает, мне нужно знать, работает ли using (SPWeb rootWeb = site.OpenWeb()) автоматически вызывается новое ключевое слово.

Или как в этом случае создать новый объект 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() правильно выдает приподнятую паутину.Проблема возникает, если вы пытаетесь использовать ранее созданный SPSite или SPWeb объекты внутри делегата.Обратите внимание, что в вашем случае даже 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 с атрибуция
Не связан с sharepoint.stackexchange
scroll top