简体   繁体   English

ASP.NET Core 3.0 RazorPages中的子域路由

[英]Subdomain routing in ASP.NET Core 3.0 RazorPages

I'm using ASP.NET Core 3.0 with razor pages, and I want to route sub1.test.local to Pages/Sub1 and sub2.test.local to Pages/Sub2 . 我正在使用带有剃须刀页面的ASP.NET Core 3.0,并且我想将sub1.test.local路由到Pages/Sub1 ,将sub2.test.localPages/Sub2 I tried create custom page convention, but this is completely different from MVC routes, so I'm asking here. 我尝试创建自定义页面约定,但这与MVC路由完全不同,所以我在这里问。

Michael Graf has post about this. Michael Graf对此发表了文章。

You first need to create custom Router by overriding MvcRouteHandler, then you need to use this Router class inside your Mvc Routes configuration. 首先,您需要通过覆盖MvcRouteHandler来创建自定义路由器,然后需要在Mvc Routes配置中使用此Router类。

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);
    }
}

In Startup config, 在启动配置中,

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}");
        });
    } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM