映射页面路由后如何禁用pageName?

How to disable pageName after mapping page route?

我正在使用 ASP.NET Core 和 Pages,并且我创建了一个这样的控制器:

namespace Demo.Pages.Channel
{
    public class IndexModel : PageModel
    {
        public string ChannelUrl { get; set; }

        public void OnGet(string url)
        {
            ChannelUrl = url;
        }
    }
}

我已经尝试绘制路线图:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AddPageRoute("/channel/index", "/{url}");
        options.Conventions.AddPageRoute("/home/error", "/channel/index");
    });

这些是我测试过的一些案例:

它工作正常。但是当我尝试时它仍然 有效 :

在上面的选项中,我已将 url /channel/index 映射到错误页面 /home/error 但无法重定向该页面。为什么?

我想将 url 映射为:localhost:44392/{url},但是 localhost:44392/channel/index

我该怎么做?

我得到的解决方案让我很难理解为什么我们需要使用这个配置:

.AddRazorPagesOptions(options =>
{
    options.Conventions.AddPageRoute("/channel/index", "/{url}");
    //options.Conventions.AddPageRoute("/home/error", "/channel/index");
});

为了映射路线,我们在 razor 页面中这样配置:

<!-- index.cshtml -->
@page "/{url}"

<!-- profile.cshtml -->
@page "/users/{userId}/profile"

<!-- error.cshtml -->
@page "/custom/error"

所以,我们需要删除配置.AddRazorPagesOptions()