MVC没有路由到我的Controller的一个Action Action?

时间:2018-05-15 02:45:04

标签: c# asp.net-mvc asp.net-mvc-routing

我有一个非常奇怪的东西,我无法弄清楚。我不是路由专家,但这应该是直截了当的。

我有一个叫做NewsletterController的控制器,它有典型的Index ActionResult。如果我以调试模式运行我的网站并使用链接转到我的时事通讯部分,我会收到403.14 Forbidden消息。如果我添加"索引"到路线然后它会去ActionResult就好了。我有其他控制器设置与索引ActionResult完全相同的方式,并正常工作。关于这个特定控制器无法正常工作,我只是不知道问题所在。

这是我的控制器代码:

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

        return View(vm);
    }
}

这是我的_Layout.cshtml的行动链接:

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

我的路由类

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 }
        );
    }
}

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

http://localhost:59571/Newsletter/

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

http://localhost:59571/Newsletter/index

1 个答案:

答案 0 :(得分:3)

当您尝试浏览到站点上的目录并且该站点未启用“目录浏览”功能且未配置默认文档时,通常会发生

403.14 Forbidden

在这种情况下,您有一个实际的Newsletter文件夹,当您尝试调用

时,该文件夹与NewsletterController的默认路由冲突
http://localhost:59571/Newsletter/

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

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