Asp.net mvc 索引的默认路由不适用于新控制器

Asp.net mvc 索引的默认路由不适用于新控制器,asp.net-mvc,routing,.net-4.5,Asp.net Mvc,Routing,.net 4.5,我的应用程序顶部的导航栏有以下代码: <li>@Html.ActionLink("Users", "Index", "Account")</li> <li>@Html.ActionLink("Models", "Index", "Models")</li> 当我点击“用户”链接时,我被带到“/Account”,并且索引被正确显示。但是,当我单击“模型”链接时,我被带到“/Models”并收到“HTTP错误403.14-禁止”错误。当我调试它时,我

我的应用程序顶部的导航栏有以下代码:

<li>@Html.ActionLink("Users", "Index", "Account")</li>
<li>@Html.ActionLink("Models", "Index", "Models")</li>
当我点击“用户”链接时,我被带到“/Account”,并且索引被正确显示。但是,当我单击“模型”链接时,我被带到“/Models”并收到“HTTP错误403.14-禁止”错误。当我调试它时,我可以看到“ModelsController”中的索引函数没有被命中/不过,“模型/索引”很好用

应该注意的是,我使用的模板中已经存在AccountController。此后,我添加了ModelsController

最后,这里是我的简单路由文件:

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

请帮助我理解AccountController和ModelsController之间的差异,这导致了路由行为的差异

我认为您的项目中已经有一个模型文件夹或其他资源,其中包含命名模型。 您可以更改控制器名称

或者为路线集合设置RouteExistingFiles

routes.RouteExistingFiles = true;

将有助于

我认为您的项目中已经有一个模型文件夹或其他一些具有命名模型的资源。 您可以更改控制器名称

或者为路线集合设置RouteExistingFiles

routes.RouteExistingFiles = true;

将有帮助

您可以使用测试工具来验证问题,例如:。我以为有一个更新的工具,但找不到…您可以使用测试工具来验证问题,例如:。我以为有一个更新的工具,但找不到…谢谢马拉松人,你为我指明了正确的方向。由于这是一个MVC项目,当然已经有一个名为“Models”的文件夹。我曾希望路由足够聪明,能够知道MVC模型和我的“模型”控制器/视图之间的区别。但情况似乎并非如此。“ModelsController”是对我们正在做的事情的完美描述。RouteExistingFiles实际上起了作用,但我刚刚重命名了控制器和视图文件夹,作为更好的修复方法。@Starky在我的回答之后,我还搜索了webforms的checkPhysicalUrlAccess。但我现在没有更好的答案。我假设控制器命名的保留关键字:)谢谢马拉松人,你为我指明了正确的方向。由于这是一个MVC项目,当然已经有一个名为“Models”的文件夹。我曾希望路由足够聪明,能够知道MVC模型和我的“模型”控制器/视图之间的区别。但情况似乎并非如此。“ModelsController”是对我们正在做的事情的完美描述。RouteExistingFiles实际上起了作用,但我刚刚重命名了控制器和视图文件夹,作为更好的修复方法。@Starky在我的回答之后,我还搜索了webforms的checkPhysicalUrlAccess。但我现在没有更好的答案。我假设控制器命名的保留关键字:)
routes.RouteExistingFiles = true;