Третичная навигация SharePoint 2010 исчезает при перезапуске AppPool и / или очистке кеша объектов - PullRequest
6 голосов
/ 10 июня 2011

У меня возникла проблема, связанная с тем, что навигация третичного уровня случайно исчезает на опубликованном сайте SharePoint 2010. Я могу воспроизвести исчезновение, переработав пул приложений или очистив кэш объектов. Кажется, что это проблема кэширования, поскольку поставщики навигации используют кэширование для повышения производительности. Как только меню исчезнет, ​​я могу получить его обратно, просто перейдя в настройки навигации для SPWeb и изменив порядок узлов. Кажется, это делает кэш недействительным, и меню появляется снова.

Ниже приведен фрагмент элементов portalsitemapdatasource и aspmenu.

    <publishingnavigation:portalsitemapdatasource id="mapThirdLevelNavigation" runat="server"
        sitemapprovider="CurrentNavigation" enableviewstate="false" startfromcurrentnode="true"
        startingnodeoffset="1" showstartingnode="false" TreatStartingNodeAsCurrent="False" />

    <sharepoint:aspmenu id="mnuBottomNavigation" runat="server" datasourceid="mapTopNavigation"
        enableviewstate="false" accesskey="<%$Resources:wss,navigation_accesskey%>"
        orientation="Horizontal" maximumdynamicdisplaylevels="0" dynamichorizontaloffset="0"
        staticpopoutimagetextformatstring="" skiplinktext="" staticsubmenuindent="0"
        cssclass="bottom-topNavContainer" />

Google не очень помог, поэтому любая оказанная помощь очень ценится.

Edit: только что заметил, что мне не нужно было менять порядок узлов для пунктов меню, чтобы появиться снова, просто загрузка страницы _layouts / AreaNavigationSettings.aspx для объекта SPWeb делает свое дело. Это похоже на проблему с кешем.

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Попробуйте увеличить значение DynamicChildLimit в web.config.

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.navigation.portalsitemapprovider.dynamicchildlimit.aspx

Это будет упомянуто в строке, где провайдер навигации объявлен, например

add name="CurrentNavSiteMapProvider" description="CMS provider for Current navigation"
    type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider"
    NavigationType="Current" EncodeOutput="true" />

DynamicChildLimit, которое является целочисленным свойством, которое определяет максимальные «динамические» дочерние элементы для каждого веб-сайта (динамические дочерние объекты включают дочерние сайты и страницы). Это значение по умолчанию равно 50, поэтому, если количество дочерних сайтов и страниц для определенного веб-сайта превышает 50, объекты будут пропущены, если вы не отрегулируете этот параметр. Этот предел можно увеличить, но имейте в виду удобство использования навигационной иерархии, в которой на каждом стержне находится так много дочерних элементов.

0 голосов
/ 11 июня 2015

Я решил похожую проблему : в элементе управления PortalSiteMapDataSource я изменил атрибут SiteMapProvider с CurrentNavigation на CurrentNavSiteMapProvider.

...