Asp.net mvc 4 在URL中没有操作或ID的情况下路由到控制器

Asp.net mvc 4 在URL中没有操作或ID的情况下路由到控制器,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我有以下路由和2个主控制器,属性: routes.MapRoute( name: "DefaultWithNoActionInUrl", url: "{controller}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( name: "Default", url: "{contro

我有以下路由和2个主控制器,属性:

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

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这些URL正确路由并将我带到索引操作:

/ /家 /主页/索引 /主页/1 /属性/索引 /物业/1 这一个始终提供未找到的资源错误:

/性质 似乎当我使用不带操作和ID的属性url时,它不会映射到任何一个路由


我的路线出了什么问题?

您可能会注意到,在解决方案资源管理器中,有一个按名称列出的文件夹属性,其中包含AssemblyInfo.cs。 如果我在这里,当您编写/Properties时,它基本上是由一个模块捕获的,该模块负责列出静态文件,而不被路由到asp.net mvc路由。当它尝试列出此文件夹的内容时,运行时不允许它,因为此文件夹未配置为目录列表

类似地,如果您创建一个名为Content的控制器,您将看到相同的错误

您是否有可能更改控制器的名称

如果这不是一个可能性,你可以遵循

在您的RouteConfig.cs中

routes.RouteExistingFiles = true;

有关上述工作原理的更多信息,请参见

确切内容。我以前从未遇到过这种情况。谢谢你的链接。我尝试将RouteExistingFiles设置为true,但所有js和css文件引用都返回404。因此,我对控制器进行了重命名;应该足够了。请让我知道这是否适合你。谢谢,正如前面提到的,它导致我的js和css文件无法加载,所以我不得不将这些行添加到路由配置中,这样我的静态资源仍然可以加载。routes.IgnoreRouteContent/{*通配符};IgnoreRouteScripts/{*通配符};routes.RouteExistingFiles=true;