微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将首页路由到区域内部索引?

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

这对我不起作用:

解决方法

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

在用户访问您网站的根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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。