Application Pages BreadCrumb and how world is connected


Sometimes I wonder how different people get the same results with no communication between them. History has many examples: calculus, radio, seems it is the other way round: we usually work at the same time trying to solved the same problems.

Working on my Search Extensions project, I saw that I should include a breadcrumb to my custom application pages, in order to optimize the navigation. As application.master includes a SPXmlContentMapProvider for those breadcrumb, I searched it in the web.config.

<asp:SiteMapPath SiteMapProvider="SPXmlContentMapProvider" id="ContentMap" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/>

If you look there, you will find it (and many others):

    <siteMap defaultProvider="CurrentNavSiteMapProvider" enabled="true">
<add name="SPXmlContentMapProvider" siteMapFile="_app_bin/layouts.sitemap" type="Microsoft.SharePoint.Navigation.SPXmlContentMapProvider, Microsoft.SharePoint, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

As you can see it is loading the XML from _app_bin folder. This is created when the webapplication is provisioned. So, after my CSSAdapter problem, I expected those files to be at

%programfiles%\Common Files\Microsoft Shared\web server extensions\12\CONFIG

As webconfig, browsers,commands and resources provisioning; sitemaps are no different. So if you add a new file named layouts.<whatever>.sitemap it will be included in any new web application.

For created web applications, there is a stsadm command that do the trick: stsadm -o copyappbincontent

But I wanted something more automated, and I found for it! and included in the OpenSearch Feature: ApplyApplicationContentToLocalServer is your friend

It is interesting that Jan Tielens blogged about it just 2 weeks ago!!


By the way, I didn't want to compare calculus and sharepoint :) and if you follow the links in common