ASP.NET MVC区域没有找到正确的路由

时间:2011-01-31 20:12:25

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

我正在调试我的MVC 3应用程序上的路由问题,我正在使用Phil Hacks路由调试器。

我似乎无法确定下面以黄色突出显示的路线的来源。每次我使用以下请求运行我的应用程序

http://www.mywebsite.com/auth/login?ReturnUrl=/

此路由首先出现然后给出了404错误,因为我没有索引操作。正如您所看到的,我已将默认路由设置为使用Login操作方法,但此路由仍然存在。

enter image description here

我有以下路线配置:

AuthAreaRegistration

public class AuthAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Auth";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "login",
            "auth/login/{*returnPath}",
            new { controller = "Auth", action = "LogIn", id = UrlParameter.Optional }
        );

        context.MapRoute(
            "Auth_default",
            "Auth/{controller}/{action}/{id}",
            new { controller = "Auth", action = "LogIn", id = "" }
        );
    }
}

Global.asax(使用T4 MVC模板)

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Home",
            "{controller}/{action}/{id}",
            MVC.Home.Index(), new { id = UrlParameter.Optional },
            new string[] { "MyNamespace.WebUI.Controllers" }

        );

        routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}",
            MVC.Home.Index(), new { id = UrlParameter.Optional },
            new string[] { "MyNamespace.WebUI.Controllers" }
        );
    }

2 个答案:

答案 0 :(得分:1)

我不想回答我自己的问题,但经过一天试图解决这个问题后,我想我会发布答案,以防其他人有同样的问题。

事实证明我的应用程序正在保留旧路由并将它们填充到我的路径集合中。我删除了bin文件夹中的所有文件并重建了我的解决方案,一切正常。

我在这里更详细地回答了这个问题:

Does ASP.NET MVC create default routes for areas

答案 1 :(得分:0)

我认为问题在于你有一个名为 Auth 区域和一个名为 Auth 控制器 >在区域之外。

MVC会首先尝试将您的网址与Auth区域匹配,但实际上您希望它在区域外击中您的auth控制器。

解决它的最佳方法是避免使用模糊的控制器/区域名称。