You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Razor Pages仅监听特定路由,解决与FastEndpoints路由冲突

解决FastEndpoints与Duende IdentityServer Razor Pages路由冲突问题

方案一:限制Razor Pages仅监听特定路由

Duende IdentityServer的Razor Pages仅用于身份认证相关页面(如登录、授权确认),可通过配置让其只处理指定前缀的路由,避免干扰API路由:

// 配置Razor Pages服务时限定路由前缀
builder.Services.AddRazorPages()
    .AddIdentityServerPages() // 保留Duende IdentityServer的页面注册
    .AddRazorPagesOptions(options =>
    {
        // 让所有Razor Pages路由都带上/identity前缀
        options.Conventions.AddFolderRouteModelConvention("/", model =>
        {
            foreach (var selector in model.Selectors)
            {
                selector.AttributeRouteModel.Template = "/identity" + selector.AttributeRouteModel.Template;
            }
        });
    });

// 注册中间件时指定路由匹配规则
app.UseRazorPages("/identity/{*slug}");

此配置后,Razor Pages仅响应/identity/**路径的请求,完全不会影响/users/self这类API路由。

方案二:调整中间件顺序,让FastEndpoints优先级更高

ASP.NET Core中间件按注册顺序执行,将FastEndpoints的中间件注册在Razor Pages之前,即可让API路由优先被处理:

// 先注册FastEndpoints中间件
app.UseFastEndpoints(x => {
    x.Endpoints.Configurator = definition => {
        definition.Description(desc => desc.ProducesProblemFE<CommonErrorResponse>(500));
        definition.Description(desc => desc.ProducesProblemFE<ErrorResponse>());
    };
    x.Endpoints.Filter = ep => true;
});

// 再注册Razor Pages中间件
app.UseRazorPages();

请求会先经过FastEndpoints匹配API路由,匹配成功则直接返回响应;未匹配到API路由时,才会交由Razor Pages处理身份相关页面。

内容的提问来源于stack exchange,提问作者Stefan S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:08:09