Im Gegensatz zu .NET MVC muss der Controller mit einem Attribut versehen werden, welches angibt zu welcher Area er gehört:

[Area("Products")]
public class HomeController : Controller
{
}

Konfiguration der Routen:

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

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

Wichtig: _ViewImports.cshtml und _ViewStart.cshtml müssen noch in den Views Ordner der Area kopiert werden!