在.NET MVC路由中,有没有办法让我在明确输入时阻止访问Index操作,即我希望它返回404,好像该操作不是有效的?
我想实现:
www.example.com /索引 => 404错误代码
www.example.com => " Root",应该在默认控制器上运行索引操作。
与StackOverflow类似,/Index
给了我404,这也是我想要模拟的内容。
目前,/
和/Index
都为我提供了有效页面 - 起始页。
现在的默认路线:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
答案 0 :(得分:0)
假设您的意思是/Home/Index
而不是/Index
,则只需将IgnoreRoute
添加到您的配置中。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("Home/Index");
routes.IgnoreRoute("Home");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
答案 1 :(得分:0)
我通过将默认路由(Root)的URL更改为空来解决了这个问题。
在ASP.NET Core 1.1.1中:
app.UseMvc(routes =>
{
routes.MapRoute("Home_Root", "", new { controller = "Home", action = "Index" });
});