2014-01-21 3 views
0

Прошу прощения за мой английский. Я пытаюсь поставить пользовательский поставщик, но когда я пишу в своем поставщике SiteMapDataSource, ничего не меняется. Когда я изменяю свой идентификатор и, соответственно, меняю его атрибуты на странице DataSourceID, появляется ошибка, которой это не так. Он помнил TopSiteMap ID и не хотел компилировать другие.Невозможно изменить DataSourceID в aspmenu

Провайдер зарегистрирован в сети config и в других семействах сайтов работает нормально. Но у этого была ошибка.

Если меню страницы мастера, как описано:
<SharePoint:AspMenu 
     ID="TopNavigationMenuV4" 
     Runat="server" 
     EnableViewState="false" 
     DataSourceID="topCrossSiteMap" 
     AccessKey="<%$Resources:wss,navigation_accesskey%>" 
     UseSimpleRendering="true" 
     UseSeparateCss="false" 
     Orientation="Horizontal" 
     StaticDisplayLevels="1" 
     MaximumDynamicDisplayLevels="3" 
     SkipLinkText="" 
     CssClass="s4-tn"/> 
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate"> 
    <Template_Controls> 
     <asp:SiteMapDataSource 
      ShowStartingNode="False" 
      SiteMapProvider="CrossSiteMapProvider" 
      id="topCrossSiteMap" 
      runat="server" /> 
    </Template_Controls> 
</SharePoint:DelegateControl> 

Выдает исключение:

System.Web.HttpException: DataSourceID из 'TopNavigationMenuV4' должен быть идентификатор элемента управления типа IHierarchicalDataSource. Не удалось найти элемент управления с идентификатором 'topCrossSiteMap'.

И в ULS в 2 миллисекунды перед запросом записи без correletion ID имеют следующую ошибку при доступе к базе данных контента:

проверка PermissionMask не удалось. Отказано просят 0x00010000, 0x00000000 у

и

доступа. Исключение: System.UnauthorizedAccessException: доступ запрещен. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
в Microsoft.SharePoint.Library.SPRequestInternalClass.GetWebMetainfo (String bstrUrl)
в Microsoft.SharePoint.Library.SPRequest.GetWebMetainfo (String bstrUrl).

Если меню страницы мастера, как описано:
<SharePoint:AspMenu 
     ID="TopNavigationMenuV4" 
     Runat="server" 
     EnableViewState="false" 
     DataSourceID="topSiteMap" 
     AccessKey="<%$Resources:wss,navigation_accesskey%>" 
     UseSimpleRendering="true" 
     UseSeparateCss="false" 
     Orientation="Horizontal" 
     StaticDisplayLevels="1" 
     MaximumDynamicDisplayLevels="3" 
     SkipLinkText="" 
     CssClass="s4-tn"/> 
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource" Id="topNavigationDelegate"> 
    <Template_Controls> 
     <asp:SiteMapDataSource 
      ShowStartingNode="False" 
      SiteMapProvider="CrossSiteMapProvider" 
      id="topCrossSiteMap" 
      runat="server" /> 
    </Template_Controls> 
</SharePoint:DelegateControl> 

Все работает без ошибок. Но меню явно использует SPNavigationProvider.

И еще одна деталь: Различные лица коллекции сайтов отображаются по-разному. (одна исключенная ошибка на другом ничего не изменилась) Сначала подумал, что проблема в объекте http.sys. Пробовал перезапустить серверы WFE. Но это не помогло.

+0

Добро пожаловать в сообщество StackOver. Можете ли вы предоставить нам свой код и структуру таблицы, чтобы мы могли лучше вам помочь? – Marek

+0

@Marek спасибо. Я надеюсь быть полезной для вас. Я добавил более подробное описание. – Musisimaru

ответ

0

Я нашел решение. Но я не мог найти объяснения. Еще один случай в кешировании некоторых видов.


Когда я изменил в DelegateControl оба идентификатора, страница загружается без ошибок.

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

  • Нет связанных вопросов^_^