将首页路由到区域内部索引?

时间:2020-10-08 10:17:41

标签: asp.net-core razor-pages area

我想将Areas用于我的RazorPage 3.1 Core项目。但是,我似乎无法从 从http://localhost:<port>http://localhost:<port>/Default/Index,当我使用Areas并将我的Pages文件夹移到Areas / Default / Pages的那一刻,我在主页上看到一个明显的404。每次启动该项目时,主页上都会显示一个404。

还是我应该在Areas文件夹之外有1个Pages文件夹,其索引如下图所示?那太奇怪了。

enter image description here

我尽我所能找到所有东西,但我不知道。我认为必须将其设置在Startup.cs中的某个位置:

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

和:

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

这对我不起作用:

1 个答案:

答案 0 :(得分:1)

将首页路由到区域内的索引

在用户访问您网站的根URL时,您似乎想在index区域文件夹下显示Default页。

要达到此要求,您可以尝试执行如下的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();
    });
}

测试结果

enter image description here