在AppPool上消失的SharePoint 2010三级导航回收和/或刷新对象缓存

e p*_*e p 6 navigation sharepoint sharepoint-2010

我遇到了一个问题,即在发布的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" />
Run Code Online (Sandbox Code Playgroud)

谷歌并不是非常有帮助,因此非常感谢所提供的任何帮助.

编辑:刚刚注意到我不需要更改菜单项重新出现的节点顺序,只需加载SPWeb对象的_layouts/AreaNavigationSettings.aspx页面即可.它看起来更像是缓存问题.

Mad*_*uja 2

尝试增加 web.config 中的值DynamicChildLimit

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" />
Run Code Online (Sandbox Code Playgroud)

DynamicChildLimit,它是一个整数属性,指定每个网站的最大“动态”子级(动态子级包括子网站和页面)。该值默认为 50,因此,如果特定网站的子网站和页面数量大于 50 个对象,则将忽略该对象,除非您调整此设置。这个限制可以增加,但请记住导航层次结构的可用性,因为每个枢轴都有很多子项。