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

标签 c# asp.net-core razor-pages asp.net-core-3.0

我将 ASP.NET Core 3.0 与 Razor 页面一起使用,我想将 sub1.test.local 路由到 Pages/Sub1sub2。 test.localPages/Sub2。我尝试创建自定义页面约定,但这与 MVC 路由完全不同,所以我在这里问。

最佳答案

Michael Graf 有关于此的帖子。

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

关于c# - ASP.NET Core 3.0 RazorPages 中的子域路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53803266/

相关文章:

c# - 无法附加分离的实体(具有相同键的实体已经在上下文中)

c# - 如何将数据从 PC 发送到手机 c#

c# - 模型绑定(bind)表单中的可编辑表字段(Razor Pages)

c# - 如何获取当前登录的用户名

java - 队列上 IBM MQ 的 IsOpen 和 OpenStatus 属性有何区别?

c# - .NET Core 注册具有不同数量参数的原始泛型

c# - 如何将 Quartz.NET 与 ASP.NET Core Web 应用程序一起使用?

asp.net-core - 是否可以在 ASP .NET Core 中使用 Swashbuckle 以 Swagger 2.0 和 Open API 3 格式公开相同的 Swagger JSON?

razor-pages - 如何重定向到 ASP.NET Identity 登录页面?

javascript - 在 Razor 页面中使用 OnPost 页面处理程序处理 AJAX 请求