Fixes #289, bug in MvcSiteMapProvider.Web install.ps1 where missing appSettings, system.web, system.web.webPages.razor, and system.webServer elements were not being added to the configuration element in the XML. Also fixed logic in install.ps1 and uninstall.ps1 so it will install or uninstall the MVC >= 4 sections without having to update the code for future versions of MVC.
Updated MvcSiteMapProvider.Shared.nuspec to ensure that MvcSiteMapProvider.Web 4.5.2 (with the bug fix for #289) is installed in new projects.
Fixed DI modules so the comment about not copying the demo settings into your project isn't included in the post-processed module files.
Updated Mvc.sitemap files in the sample projects to use the MvcSiteMapProvider.xsd file in the MvcSiteMapProvider project so there are not multiple copies of the XSD in the solution.
Fix for error caused by no guard to check if the startingNode parameter is null in the MenuHelper.GetNodeAtLevel() method.
Fixed bug where explicit URL nodes and non-clickable nodes were being included in the route matching logic. Routes should never match in these cases.
Fixes #291
- Throw exception in the case where a specified dynamic node provider doesn't match.
- Convert .NET type string for dynamic node providers, visibility providers, and URL resolvers to .NET type before making comparison so that any valid variants of a .NET type string (including fully-qualified names, for strong naming) can be used.
- Reworked the logic of dynamic node, visibility provider, and URL resolver strategy classes so the AppliesTo() method is always called including the case where the providerName is empty string. This allows that case to be taken into account for custom providers.
Fixes #293, AuthorizeAttributeAclModule now works when specifying the URL explicitly, not just when using controller and action.
Fixes #292, use invariant culture for all of the ISiteMapNodeProvider instances so parsing of strings and dates will be the same for all users. Also using the invariant culture when the /sitemap.xml endpoint is run so the DateTime.MinValue can be compared without changing from culture to culture.

This is a breaking change for custom ISiteMapNodeProvider implementations that depend on the current culture to parse dates and/or format strings. IDynamicNodeProvider implementations are still run under the current culture, so it is not a breaking change in that case.
Updated Mvc.sitemap files in the sample projects to use the MvcSiteMapProvider.xsd file in the MvcSiteMapProvider project so there are not multiple copies of the XSD in the solution.
Added support for eliminating the ambient request values from being considered when resolving URLs (#213).
Fixes #213, added IncludeAmbientRequestValues as a feature of ISiteMapNode and provided support for populating this property through XML, Dynamic Nodes, and MvcSiteMapNodeAttribute.
Added the protocol and hostName properties/attributes to ISiteMapNode, SiteMapNode, LockableSiteMapNode, RequestCacheableSiteMapNode, XmlSiteMapNodeProvider, XmlSiteMapNodeBuilder, DynamicNode, IMvcSiteMapNodeAttribute, MvcSiteMapNodeAttribute, ReservedAttributeNameProvider, and MvcSiteMapSchema.xsd.
Updated SiteMapNodeUrlResolver to support protocol and hostName.
Reworked UrlPath class to provide ResolveUrl overloads that correctly a) resolve the ~ character b) resolve the hostName and protocol, accounting for when the site is hosted on a web farm/cloud environment. Also moved the logic of determining whether host name matches the current request and whether the URL is external into the UrlPath class. Added unit tests for the new methods in the UrlPath class.
Added exclusion to the SiteMapNode.ResolveUrl method for when protocol is supplied without hostName - in this case the hostName is inferred from the current request so we need to ensure it is not cached.
Removed code in SiteMap.AddNode that removes a node if the URL exists already (apparently the url table was not being cleared correctly). This situation should be caught in AddNodeInternal.
Bug fix for SiteMapNode.CanonicalUrl property to use public facing URL instead of HttpContext.Request.Url so it will function correctly in web farm and cloud environments.
Added an HttpContext property to the MvcSiteMapNode so the syntax is simpler for getting the current context within the node.
Fixed bug in SiteMapNode.GetAbsoluteCanonicalUrl where the node's URL wasn't being used when finding the node by key.