Problems when preservedRouteParameters contains UrlParameter.Optional
<p>This issue bother me hours. Here is my routes.MapRoute:</p>

<pre><code> routes.MapRoute(
            "SiteArea",
            "SiteArea/{area}/{link}",
            new { controller = "SiteArea", action = "Dispatch", link = UrlParameter.Optional },
            namespaces
        );
</code></pre>

<p>The link is optional, could be null. In Mvc.sitemap:</p>

<pre><code>&lt;mvcSiteMapNode title="SiteArea" controller="SiteArea" action="Dispatch" route="SiteArea" preservedRouteParameters="area,link" /&gt;
</code></pre>

<p>In C# Mvc action:</p>

<pre><code>public override ActionResult Dispatch(string area, string link)
    {
        var node = SiteMaps.Current.CurrentNode;
        if (node != null)
        {
            node.ParentNode.Title = area;
            node.Title = link;
        }

        return base.Dispatch(area, link);
    }
</code></pre>

<p>The </p>

<blockquote>
  <p>SiteMaps.Current.CurrentNode</p>
</blockquote>

<p>always throw exception:</p>

<pre><code> The node with key _Home_Index_GET_Home__SiteArea_Dispatch_GET_SiteArea_' and title 'SiteArea' has 'area' configured in both RouteValues and PreservedRouteParameters, which is not allowed. PreservedRouteParameters copies the route value from the current HTTP request which would overwrite your configured RouteValue in every case. Either remove 'area' from PreservedRouteParameters or as a configured RouteValue.
    Alternatively, if you are configuring the node in XML and intend to use 'area' as a custom attribute, use the 'MvcSiteMapProvider_AttributesToIgnore' configuration setting to ensure 'area' is not automatically added to RouteValues. If using external DI, this setting is injected into the constructor of 'SiteMapXmlReservedAttributeNameProvider'.
</code></pre>

<p>I know this exception is bogus one and won't tell anything useful to this issue.
However, I have exactly same situtation except the link is not UrlParameter.Optional - not nullable and it worked fine.
Can anyone explain or provide solution to this issue - when the second preserved parameter is optional?</p>