我在测试另一个问题时突然开始出现此错误。每当我尝试在本地运行我的代码时,我都会得到一个空白页面。在我的日志中,我看到"请求与任何路由都不匹配"
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没有工作,无论我有多少路线,我都会得到相同的行为。此代码在服务器上运行,问题仅在本地发生。任何帮助将不胜感激。
答案 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)
});