繁体   English   中英

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

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

我正在使用带有剃须刀页面的ASP.NET Core 3.0,并且我想将sub1.test.local路由到Pages/Sub1 ,将sub2.test.localPages/Sub2 我尝试创建自定义页面约定,但这与MVC路由完全不同,所以我在这里问。

Michael Graf对此发表了文章。

首先,您需要通过覆盖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);
    }
}

在启动配置中,

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