SharePoint Quick Launch Items Disappearing?
Last week I encountered a mysterious error. Out of a sudden almost all subwebs of a particular site have no current navigation (quick launch). It was just gone. Read about the solution I’ve discovered which might help you as well.
I quickly checked the log files and found the following entry:
TOPOLOGY Unable to retrieve parent item for: /.../309/Pages/Default.aspx
Huh? I was completely unable to comprehend what was wrong, since the site hierarchy was OK and the particular web page existed of course as it’s been displayed properly with the quick launch items missing.
Background
We have set up a project web site (Collaboration Portal) which is the main entry point for managing our project documentation and tasks. It mainly consists of a Links List that allows for quick access to our project subsites. Whenever one of my colleagues creates a new item a new website based on a custom site definition is provisioned including all document libraries and other lists.
After a while the list grew bigger and bigger (50+ projects) and I suddenly observed that some project subsites didn’t have a working navigation in place.
The following screenshot shows how it should look like:

Below you can see another project web site with a defective quick launch:

Associated with it is the following log file entry:
TOPOLOGY Unable to retrieve parent item for: /.../636/Pages/Default.aspx
The Solution
Asking Google.com for this error message did return anything useful and after some wild guesses I’ve decided to investigate the web application’s navigation provider settings which are set up globally in the application’s web.config file.
Visiting MSDN to look up all possible provider settings (documented here) I stumbled accross the DynamicChildLimit property.
Experimenting with it I found that when setting DynamicChildLimit to zero (’0′) all four provider settings available in the web.config the problem just disappears.
So, if you encounter the problem I’ve just outlined you may want to try modifying your web.config accordingly:
<add name="GlobalNavSiteMapProvider" description="CMS provider for Global navigation" type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Global" EncodeOutput="true" DynamicChildLimit="0" IncludePages="PerWeb" IncludeHeadings="true" IncludeAuthoredLinks="true" /> <add name="CombinedNavSiteMapProvider" description="CMS provider for Combined navigation" type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Combined" EncodeOutput="true" DynamicChildLimit="0" IncludePages="PerWeb" IncludeHeadings="true" IncludeAuthoredLinks="true" /> <add name="CurrentNavSiteMapProvider" description="CMS provider for Current navigation" type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Current" EncodeOutput="true" DynamicChildLimit="0" IncludePages="PerWeb" IncludeHeadings="true" IncludeAuthoredLinks="true" /> <add name="CurrentNavSiteMapProviderNoEncode" description="CMS provider for Current navigation, no encoding of output" type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" NavigationType="Current" EncodeOutput="false" DynamicChildLimit="0" IncludePages="PerWeb" IncludeHeadings="true" IncludeAuthoredLinks="true" /> |
Hope that this tip is helpful and, as always, thanks for reading.
