У Майкла Графа есть сообщение об этом.
Сначала вам нужно создать собственный Маршрутизатор, переопределив MvcRouteHandler, затем вам нужно использовать этот класс Маршрутизатора в вашей конфигурации Маршрутов Mvc.
public class AreaRouter : MvcRouteHandler, IRouter
{
public new async Task RouteAsync(RouteContext context)
{
string url = context.HttpContext.Request.Headers["HOST"];
string firstDomain = url.Split('.')[0];
string subDomain = char.ToUpper(firstDomain[0]) + firstDomain.Substring(1);
string area = subDomain;
context.RouteData.Values.Add("area", subDomain);
await base.RouteAsync(context);
}
}
В конфигурации запуска
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc(routes =>
{
routes.DefaultHandler = new AreaRouter();
routes.MapRoute(name: "areaRoute",
template: "{controller=Home}/{action=Index}");
});
}