Требования безопасности доступа к коду PortalSiteMapprovider - PullRequest
0 голосов
/ 03 августа 2009

Я использую объект 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, как и ожидалось.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 03 августа 2009

Вы можете попробовать использовать Reflector. Это должно показать вам разрешения CAS для этого класса.

Или используйте WSPBuilder , который будет использовать отражение для создания файла CAS для вас. Я рекомендую эту опцию, так как вам не нужно беспокоиться о повторном редактировании файлов CAS!

...