2009-08-03 3 views
0

Я использую объект portalsitemapprovider для создания моего контроллера навигационного сервера.PortalSiteMapprovider Code Access Требования безопасности

Я назначил доступ к объектной модели sharepoint и права олицетворения в элементах управления CAS. Однако, несмотря на это, я не могу восстановить дочерние узлы корневого узла Sitemap, они просто возвращают ошибку.

Если я изменил веб-приложение для запуска под полным доверием, я могу восстановить дочерние узлы.

Таким образом, мой вопрос заключается в том, какие политики CAS требуются для полного доступа к данным в объекте поставщика Sitemap, и почему я могу получить доступ к корневому узлу, но не к его детям в настоящее время?

Пример кода:

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)] 

С approprite записей IPermission в развертывании манифеста. После развертывания веб-приложения web.config обновляется до уровня доверия WSS_Custom, как и ожидалось.

Любые идеи?

Thanks

ответ

1

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

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

+0

Не знаете, как увидеть разрешения CAS для класса в отражателе. Я использую WSPBuilder, и он создает пользовательский CAS, но он не работает! :( – Eriedor

+0

Перейдите к классу и посмотрите на атрибуты, украшающие его (должно быть рядом с верхней строкой). –

+0

Хорошо, я посмотрел, и portalsitemapnode имеет ссылку на запрос asphostingpermission.minimal (покрывается wss_minimal) и потребность в ссылке для sharepoint object (закрыто моим обычным cas). Что странно, если уровни CAS не выполняются, не следует ли сборку просто не загружать? (например, если я изменю уровень доверия веб-приложений до wss_medium, сборка не загрузится) Почему он загружает сборку в порядке, но не выполняет вызов без исключения безопасности, просто генерирует «ошибку». – Eriedor

Смежные вопросы