Я использую объект portalsitemapprovider для создания элемента управления моего сервера навигации.
Я назначил права доступа к объектной модели sharepoint и права олицетворения в элементах управления CAS. Однако, несмотря на это, я не могу получить дочерние узлы корневого узла карты сайта, они просто возвращают ошибку.
Если я изменю веб-приложение для запуска с полным доверием, я могу получить дочерние узлы.
Таким образом, мой вопрос заключается в том, какие политики CAS требуются для полного доступа к данным в объекте поставщика карты сайта, и почему я могу получить доступ к корневому узлу, но не к его дочерним элементам в настоящее время?
Пример кода:
PortalSiteMapProvider sp = PortalSiteMapProvider.WebSiteMapProvider;
PortalSiteMapNode rootNode = (PortalSiteMapNode)siteProvider.RootNode;
foreach (SiteMapNode node in rootNode.ChildNodes)
{
//this loop returns 1 item with title "Error" with no exception thrown.
}
Моя сборка имеет следующие запросы CAS:
[assembly: SharePointermission(SecurityAction.RequestMinimum, ObjectModel=true, Impersonate=true)]
С соответствующими записями IPermission в манифесте развертывания. После развертывания веб-приложения web.config обновляется до уровня доверия WSS_Custom, как и ожидалось.
Есть идеи?
Спасибо