为什么Web root在ASP.Net MVC 5中提供404

时间:2018-01-02 01:40:36

标签: asp.net-mvc asp.net-mvc-5.2

我有一个ASP.Net MVC 5站点,我更改了Home控制器中的路由以删除Home部分。

我的家庭控制器看起来像

    [Route("Index")]
    public ActionResult Index()
    {
        ViewBag.Title = "Home";
        ViewBag.Current = "Home";

        return View();
    }

当我转到http://localhost:29033/Index时这很有用,但当我转到http://localhost:29033时,我收到以下错误:

公共行动方法'索引'在控制器' MyProject.Controllers.HomeController'中找不到。

我的RegisterRoutes看起来像:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.LowercaseUrls = true;

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

        routes.MapMvcAttributeRoutes();

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

鉴于此处似乎正在使用属性路由,我相信您需要更新路由以获得所需的行为

[RoutePrefix("home")]
public class HomeController : Controller {

    [Route("Index")] // Matches GET home/index
    [Route("~/", Name = "root")] //Matches GET /
    public ActionResult Index() {
        //...code removed for brevity
    }    

}

参考Attribute Routing in ASP.NET MVC 5