Маршрутизация поддоменов в ASP.NET Core 3.0 RazorPages - PullRequest
0 голосов
/ 16 декабря 2018

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

1 Ответ

0 голосов
/ 16 декабря 2018

У Майкла Графа есть сообщение об этом.

Сначала вам нужно создать собственный Маршрутизатор, переопределив 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}");
        });
    } 
...