我有一个非常奇怪的东西,我无法弄清楚。我不是路由专家,但这应该是直截了当的。
我有一个叫做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
答案 0 :(得分:3)
403.14 Forbidden
。
在这种情况下,您有一个实际的Newsletter
文件夹,当您尝试调用
NewsletterController
的默认路由冲突
http://localhost:59571/Newsletter/
如果未启用此功能,它将尝试返回该文件夹的实际内容。
将文件夹删除或重命名为与任何控制器名称不冲突的内容