C# 仅参数路由始终被触发MVC3

C# 仅参数路由始终被触发MVC3,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我有两条非常简单的路线 routes.MapRoute( "post", // Route name postPage + "/{slug}", // URL with parameters new { controller = "Home", action = "Article" } // Parameter defaults ); routes.MapRoute(

我有两条非常简单的路线

       routes.MapRoute(
            "post", // Route name
            postPage + "/{slug}", // URL with parameters
            new { controller = "Home", action = "Article" } // Parameter defaults
        );

        routes.MapRoute(
            "page", // Route name
            "{slug}", // URL with parameters
            new { controller = "Home", action = "Page", slug = homePage} // Parameter defaults
        );
这是我的控制器逻辑

    public ActionResult Article(string slug)
    {
        return View(repo.GetPost(slug));
    }

    public ActionResult Page(string slug)
    {
        if (slug.ToLower() == MetaData.PostsPage.ToLower())
            return View("listPosts", repo.GetAllPosts());
        else
            return View("page", repo.GetPage(slug));
    }
主页和后期页面是根据数据库中的值设置的。允许用户定义默认页面以及显示帖子的页面

添加名为“Admin”的区域时出现我的问题。我在RouteTable中添加了一个控制器

    context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
现在,当用户访问Admin/Account/Logon时,页面可以正常加载,但我的调试器仍然尝试进入主控制器和页面操作。但是RouteDebugger说它与当前的请求不匹配。我对如何解决这个问题感到困惑

RouteDebugger屏幕截图:
调试器进入my HomeControler页面结果:

实际上问题是,区域路由覆盖了全局路由,为了区分这两个路由,在adminaregistration.cs文件的context.maprote方法中设置了区域控制器的相关命名空间。i、 e

context.MapRoute(
 "admin_default",
 "admin/{controller}/{action}/{id}",
 new { controller = "Home", action = "Index", id = UrlParameter.Optional },
 null,
 new string[] { "MVCApplication1.Areas.admin.Controllers" }
);
我发现了这个问题

我有一个favicon.ico设置在我的网站的主要区域,但不是管理区域。 因此,当我进入管理区时,浏览器向favicon.ico发出请求,该请求通过该路径获取。这就是为什么我的路线在RoutedBugger中看起来很好,因为它们是


谢谢你的帮助,昆丹

我将其添加到我的admin_默认设置中,但它仍在尝试在我的主控制器中运行我的页面操作中的代码