路由覆盖在 asp.net 核心 3.1 razor 页面中不起作用

Route Override not working in asp.net core 3.1 razor pages

我正在使用 Asp.Net Core 3.1 Razor pages。我需要覆盖我所在区域的其中一个页面的路由。

我的 Area - Blog 中有 Home 页面,当前路线是 localhost/blog/home。我需要将其更改为 localhost/blog。我在同一博客区域中有一个 Index 页面,但它有一个路由参数。所以它将是 localhost/blog/my-blog-name。而且这不会干扰 localhost/blog

我在startup.cs

中添加了ConfigureServices中的设置
services
    .AddRazorPagesOptions(options => 
    {
        options.Conventions.AddAreaPageRoute("Blog", "/", "/blog/home");
    });

这是我的文件夹结构,

但是当我导航到 localhost/blog 时,我发现 404 未找到。请协助我哪里错了。

I have Home page in my Area - Blog and the current route is localhost/blog/home. I need to change this to localhost/blog. I have an Index page in the same blog area but it has an route parameter.

when i navigate to localhost/blog I get an 404 not found.

如果你查看AddAreaPageRoute method的定义,你会发现它包含区域名称、页面名称和路由模板,如下所示。

.AddAreaPageRoute("{area_name_here}", "{page_name_here}", "{route_here}")

根据您的要求和代码,我们发现您没有正确配置到页面的指定路由,如果您的博客区Index页面接受了一个必需的(非可选的)路由参数,这浏览 localhost/blog.

时会导致 404 错误

要解决问题并达到要求,您可以尝试修改如下代码。

services.AddRazorPages()
    .AddRazorPagesOptions(
        options =>
        {
            options.Conventions.AddAreaPageRoute("Blog", "/home", "/blog");
        }
    );

测试结果