MVC 不路由到我的控制器的操作结果之一?

Cav*_*man 2 c# asp.net-mvc asp.net-mvc-routing

我有一个非常奇怪的问题,我无法弄清楚。我不是路由专家,但这应该很简单。

我有一个名为 NewsletterController 的控制器,它具有典型的 Index ActionResult。如果我在调试模式下运行我的网站并使用链接转到我的新闻通讯部分,我会收到一条403.14 Forbidden消息。如果我将“Index”添加到路线中,那么它将很好地转到 ActionResult。我以完全相同的方式使用 Index ActionResult 设置了其他控制器,并且工作得很好。这是关于这个特定控制器无法工作的问题,我只是不明白问题是什么。

这是我的控制器代码:

public class NewsletterController : Controller
{
    public ActionResult Index()
    {
        var vm = new NewsletterViewModel();
        ...CODE REMOVED FOR SPACE

        return View(vm);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 _Layout.cshtml 中的操作链接:

@Html.ActionLink("Newsletters", "Index", "Newsletter", null, new { @class = "nav-link" })
Run Code Online (Sandbox Code Playgroud)

我的路由类

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

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

如果我去这里我就会收到403.14 Forbidden消息。

http://localhost:59571/Newsletter/
Run Code Online (Sandbox Code Playgroud)

如果我将索引添加到路线中,它将转到该页面。

http://localhost:59571/Newsletter/index
Run Code Online (Sandbox Code Playgroud)

Nko*_*osi 5

403.14 Forbidden当您尝试浏览网站上的目录,但该网站未启用目录浏览功能且未配置默认文档时,通常会发生这种情况。

在这种情况下,您有一个实际文件夹,当您尝试调用时,Newsletter该文件夹与默认路由冲突NewsletterController

http://localhost:59571/Newsletter/
Run Code Online (Sandbox Code Playgroud)

它将尝试返回该文件夹的实际内容,如果未启用该功能,则会失败。

删除该文件夹或将其重命名为不与任何控制器名称冲突的名称