【问题标题】:Routing error with default url in ASP.NET MVC 6ASP.NET MVC 6 中默认 url 的路由错误
【发布时间】:2016-04-29 12:13:53
【问题描述】:

我在 MVC 6 Web 应用程序中遇到路由问题:当我在默认使用的控制器中设置路由参数时,应用程序发送 404 错误。

我的路由配置:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Dashboard}/{action=Index}/{id?}");
        });

我的仪表板控制器(应用程序有效):

[Authorize]
public class DashboardController : Controller
{
     public DashboardController()
     { }

     [HttpGet]
     public IActionResult Index() => View(new IndexViewModel());
}

相同的仪表板控制器(应用程序响应 404 错误):

[Authorize]
[Route("[controller]")]
public class DashboardController : Controller
{
     public DashboardController()
     { }

     [HttpGet]
     [Route("[action]")]
     public IActionResult Index() => View(new IndexViewModel());
}

【问题讨论】:

  • 你使用什么 url 返回 404?
  • 启动应用时的默认url,localhost:PORT_NUMBER
  • @Adrien:请不要使用 asp.net-mvc 和 asp.net-mvc6 标签。前者用于旧的 ASP.NET MVC 框架,后者是错误的,因为 ASP.NET Core MVC 将其版本重置为 1.0.0
  • @Tseng 好的,注意到了

标签: asp.net-mvc-routing asp.net-core-mvc asp.net-core-1.0


【解决方案1】:

发生这种情况的原因是通过routes.MapRoute 指定的路由仅适用于使用基于属性的路由的控制器。由于您的第二个示例使用基于属性的路由,因此只能通过属性中指定的路由访问控制器。所以只能在 /Dashboard/Index 处访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2010-11-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多