Прошу прощения за мой английский. Я пытаюсь поставить пользовательский поставщик, но когда я пишу в своем поставщике 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. Но это не помогло.
Добро пожаловать в сообщество StackOver. Можете ли вы предоставить нам свой код и структуру таблицы, чтобы мы могли лучше вам помочь? – Marek
@Marek спасибо. Я надеюсь быть полезной для вас. Я добавил более подробное описание. – Musisimaru