title: ASP.NET MVC Default routes accessible via area routes
body: <p>So far (for brevity) I have one route in global.asax registered like this:</p>
  
  <pre><code>routes.Add(new LowercaseRoute("{action}/{id}", new MvcRouteHandler())
    {
      Defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
      DataTokens = rootNamespace
    }); 
  </code></pre>
  
  <p>Where "rootNamespace" is </p>
  
  <pre><code>var rootNamespace = new RouteValueDictionary(new { namespaces = new[] { "MyApp.Web.Controllers" } });
  </code></pre>
  
  <p>LowercaseRoute inherits from Route and just makes all paths lowercase. I also have an area registered like this:</p>
  
  <pre><code>context.Routes.Add(new LowercaseRoute("admin/{controller}/{action}/{id}", new MvcRouteHandler())
    {
      Defaults = new RouteValueDictionary(new { action = "List", id = UrlParameter.Optional }),
      DataTokens = adminNamespace
    });
  </code></pre>
  
  <p>Where adminNamespace is another namespace, same idea as in the default route, but with the right namespace. This works fine, I can access URLs that look like this:</p>
  
  <pre><code>http://example.com/contact  &lt;- default route, "Home" controller
  http://example.com/admin/account  &lt;- area route, "Account" controller, default "List" action
  </code></pre>
  
  <p>The problem is that this</p>
  
  <pre><code>http://example.com/admin/home/contact
  </code></pre>
  
  <p>also works. There's no "home" controller with a "contact" action under the "admin" area. It pulls the right page from "/contact" but with URL being "/admin/home/contact".</p>
  
  <p>Is there any way to prevent this from happening? </p>
  
  <p>Thanks.</p>