将主页路由到区域内的索引?

Route homepage to Index inside Areas?

我想为我的 RazorPage 3.1 核心项目使用区域。但是,我似乎无法将主页从 http://localhost:<port>http://localhost:<port>/Default/Index,当我使用 Areas 并将我的 Pages 文件夹移动到 Areas/Default/Pages 时,我的主页出现了明显的 404。每次启动该项目时,主页都会出现 404。

或者我是否应该在区域文件夹之外有 1 个页面文件夹,其索引如下图所示?那会很奇怪。

我尝试了所有我能找到的方法,但还是想不通。我认为它必须设置在 Startup.cs:

中的某处
            services.AddMvc().AddRazorPagesOptions(options =>
        {
            options.Conventions.AddPageRoute("/Default/Index", ""); // Or something?
        });

和:

public IActionResult Get()
{
    return RedirectToAction("Default/Index");
}

这对我不起作用:

Route homepage to Index inside Areas

您似乎希望在 Default 区域文件夹下显示 index 页面,同时用户访问您网站的根目录 URL。

为了达到要求,您可以尝试URL重写操作,如下所示。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }

    app.Use(async (context, next) =>
    {
        if (context.Request.Path=="/")
        {
            context.Request.Path = "/Default/Index";
        }

        await next.Invoke();
    });

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
    });
}

测试结果