Asp.net mvc 4 MVC4 ASP.NET中的路由

Asp.net mvc 4 MVC4 ASP.NET中的路由,asp.net-mvc-4,Asp.net Mvc 4,我正在MVC4的路线上挣扎 我有家作为控制器,我有一个索引。我相信这是一个非常典型的设置!当我从VisualStudio加载站点时,它运行良好 现在,我想了解路线。为了做到这一点,我试图改变那里唯一的路线,那就是 routes.MapRoute( name: "Default", url: "{controller}/{action}", defaults: new { controller = "Home", action = "Index" }

我正在MVC4的路线上挣扎

我有家作为控制器,我有一个索引。我相信这是一个非常典型的设置!当我从VisualStudio加载站点时,它运行良好

现在,我想了解路线。为了做到这一点,我试图改变那里唯一的路线,那就是

routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}",
        defaults: new { controller = "Home", action = "Index" }
        ); 
我不明白的是为什么这条路线不起作用。我只有一个控制器,它是Home,所以通过设置
Home/{action}/
匹配模式(尽管它显然不匹配)

我得到的不是网页,而是以下内容

HTTP错误403.14-禁止
Web服务器配置为不列出此目录的内容。
未为请求的URL配置默认文档,并且未在服务器上启用目录浏览


您正在删除默认路由,因此不再有任何路由来处理“/”路由

如果您键入站点/Home或/Home/Index,它将起作用。但是,由于不再有任何路由来处理默认情况,因此您会遇到这个问题

您要做的是在您的默认路线之前添加一条额外的路线,该路线执行您想要的操作。但是,在这种情况下,当您显式输入/Home url时,它不会执行与默认路由不同的操作。另外,删除url后面的“/”,因为我不确定这是否会导致问题。即:

routes.MapRoute(
    name: "Home",
    url: "Home/{action}",
    defaults: new { controller = "Home", action = "Index" }
    );
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
    ); 
routes.MapRoute(
    name: "Home",
    url: "Home/{action}",
    defaults: new { controller = "Home", action = "Index" }
    );
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" }
    );