Маршрутизация поддоменов в RazorPages ASP.NET Core 3.0

Я использую ASP.NET Core 3.0 с бритвенными страницами и хочу направить sub1.test.local на Pages/Sub1 и sub2.test.local на Pages/Sub2. Я пробовал создать пользовательское соглашение о страницах, но оно полностью отличается от маршрутов MVC, поэтому я спрашиваю здесь.


person 6pak    schedule 16.12.2018    source источник


Ответы (1)


Майкл Граф написал об этом.

Сначала вам нужно создать собственный маршрутизатор, переопределив MvcRouteHandler, затем вам нужно использовать этот класс маршрутизатора в своей конфигурации Mvc Routes.

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}");
        });
    } 
person Derviş Kayımbaşıoğlu    schedule 16.12.2018