请求与任何路由都不匹配

时间:2018-02-27 17:02:53

标签: c# routing core

我在测试另一个问题时突然开始出现此错误。每当我尝试在本地运行我的代码时,我都会得到一个空白页面。在我的日志中,我看到"请求与任何路由都不匹配"

    app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "areaRoute",
                template: "{area:exists}/{controller}/{action}/{id?}");

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

到目前为止,我没有遇到问题,我的代码会使用areaRoute来打开仪表板。现在它忽略了所有的路线。

    [Area(Consts.Area)]
public class Dashboard : Controller
{
    private DashboardService _service;
    public Dashboard(DashboardService service)
    {
        _service = service;
    }

    [Authorize(Roles = "admin")]
    public ActionResult InternalDashboard()
    {
        return View();
    }
}

这是我遇到问题的控制器。它位于一个名为AbstractReport的区域内。我尝试过使用MapAreaRoute以及只有一条路线来查看它是否会接收它。 MapAreaRoute没有工作,无论我有多少路线,我都会得到相同的行为。此代码在服务器上运行,问题仅在本地发生。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要在第一个区域路线中指定默认区域,控制器和操作名称

对于aspnet core 2,您的默认路由是这样的:

 routes.MapRoute(
     name: "areaRoute",
     template: "{area:exists}/{controller}/{action}/{id?}"
     defaults: new {
         controller = nameof(Dashboard),
         area = Consts.Area,
         action = nameof(Dashboard.InternalDashboard)
     });