Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC是否为区域创建默认路由_Asp.net Mvc_Asp.net Mvc Routing_Asp.net Mvc Areas - Fatal编程技术网

Asp.net mvc ASP.NET MVC是否为区域创建默认路由

Asp.net mvc ASP.NET MVC是否为区域创建默认路由,asp.net-mvc,asp.net-mvc-routing,asp.net-mvc-areas,Asp.net Mvc,Asp.net Mvc Routing,Asp.net Mvc Areas,我的MVC3应用程序Auth和Users中有几个方面。我正在使用查看我的路线列表,并查看根据我的url选择的路线 然而,有两条路线是我没有在AreaRegistration文件或Globalax中创建的,我不知道它们来自何处,也不知道如何摆脱它们。路线在下面以黄色突出显示 您还可以看到,我在我的身份验证区域(以绿色突出显示)中创建了一个默认路由,它只指向我的身份验证控制器的登录操作。我已经调试了RouteTable,它在AreaRegistration.RegisterAlleas()时被添加;

我的MVC3应用程序Auth和Users中有几个方面。我正在使用查看我的路线列表,并查看根据我的url选择的路线

然而,有两条路线是我没有在AreaRegistration文件或Globalax中创建的,我不知道它们来自何处,也不知道如何摆脱它们。路线在下面以黄色突出显示

您还可以看到,我在我的身份验证区域(以绿色突出显示)中创建了一个默认路由,它只指向我的身份验证控制器的登录操作。我已经调试了RouteTable,它在AreaRegistration.RegisterAlleas()时被添加;方法被调用。但是,它不会添加到区域注册中,因为我们也已完成了此步骤

ASP.NET MVC是否将此添加为默认值?如果是,我是否可以以某种方式删除它


是的,每个区域都有自己的区域注册文件,用于定义区域路线。在您的区域根文件夹中查找它

对于您的用户区域,请查看Areas->User->UserAreaRegistration.cs

它应该包含如下内容:

    public class UserAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "User";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "User_default",
                "User/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

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

最后,我从应用程序中删除了所有区域,只使用了基本的Global.asax路由。当我运行该应用程序时,我可以在route debugger中看到routing集合中仍然填充着来自现在不存在的区域的路由。在尝试了很多事情之后,包括从我的ASP.NET临时文件中删除所有内容、乱搞IIS应用程序池以及清除浏览器数据,我终于找到了答案

我删除了网站bin文件夹中的所有内容,进行了一次重建和low,结果发现,这些路线都消失了。我用描述的配置恢复了我的区域,一切正常


我不知道为什么我的MVC应用程序会保留并填充旧的路由,但一旦我的bin被清除,新的dll被创建,一切都会正常工作。如果有人知道这可能是为什么,那么我会非常感兴趣。

您是否重命名了您的项目?它通过反射加载路由,可能是扫描bin文件夹中的所有内容。因此,如果您重构了代码并更改了程序集名称,您可以很容易地提取旧代码并注册这些路由


JB

谢谢frennky,我已经知道了这一点,并且已经按照我的问题中所述配置了区域注册。my AuthAreaRegistration.cs文件中的默认路由在上面以绿色突出显示。我不明白的是,如果我在AreaRegistration.cs文件和Global.asax文件中都配置了默认路由,那么以黄色突出显示的路由从何而来?MVC创建它们是因为我编辑了默认路线,从而将它们转换为自定义路线吗?如果是的话,我可以取消默认路线吗?你能给我们提供你在areas和global.asax以及Application_Start method中的路线注册代码吗?我发布这个问题的原因是试图找到这个问题的答案,其中详细说明了我在这两种地区的代码。我不知道这是否是我如何设置和配置的东西,但这个地区的路由似乎是如此脆弱的我。我已经向我的控制器添加了一个索引操作方法,并执行了一个RedirectToAction(“登录”),所以无论它选择哪个默认路由,它都会获得登录控制器。然而,我仍然没有得到每次登录页面。有时我做,有时我得到404。如果我关闭浏览器然后重新启动,有时它会工作。没有一致性。遗憾的是,我正在讨论把我的领域去掉,把所有东西都放在主MVC项目结构中。非常感谢你在这一点上的帮助,Frennky,非常感谢。我已经为您的评论授予了一些up投票,因为它们是很好的有效评论,将对其他人有所帮助。我已经找到了问题的解决方案,并回答了上面的问题。感谢您的评论,试图澄清这一点,但我从未重命名过该项目,但我知道这可能是由于其他重构更改造成的。