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

Blazor Server中解决ASP.NET Core Identity重定向/Index报错的方法

解决Identity脚手架重定向到/Index报错的问题

问题核心是ASP.NET Core Identity生成的Razor Page代码调用RedirectToPage("/Index")时,你的Blazor项目中没有对应的Razor Page,导致服务器端报错。以下是无需修改数十个Identity文件的解决方法:

方法一:添加临时Index Razor Page

在项目的Pages文件夹下创建Index.cshtml文件,内容如下:

@page "/Index"
@{
    Layout = null;
    Response.Redirect("/", permanent: true);
}

同时创建对应的Index.cshtml.cs文件(空实现即可):

using Microsoft.AspNetCore.Mvc.RazorPages;

namespace YourProjectNamespace.Pages;

public class IndexModel : PageModel
{
    public void OnGet()
    {
    }
}

这样Identity代码中的RedirectToPage("/Index")会找到这个页面,自动重定向到Blazor的根路径/,不会再抛出错误。

方法二:自定义重定向结果处理器

如果不想新增文件,可以通过替换MVC的RedirectToPageResultExecutor来拦截并修改目标路径:

  1. 在Program.cs中注册自定义处理器:
services.AddScoped<RedirectToPageResultExecutor, CustomRedirectToPageResultExecutor>();
  1. 定义自定义处理器类:
using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;

namespace YourProjectNamespace;

public class CustomRedirectToPageResultExecutor : RedirectToPageResultExecutor
{
    public CustomRedirectToPageResultExecutor(ILoggerFactory loggerFactory, IUrlHelperFactory urlHelperFactory)
        : base(loggerFactory, urlHelperFactory)
    {
    }

    public override Task ExecuteAsync(ActionContext context, RedirectToPageResult result)
    {
        // 拦截目标为/Index的重定向,替换为Blazor宿主页面/_Host
        if (result.PageName == "/Index")
        {
            result = new RedirectToPageResult("/_Host", result.PageHandler, result.RouteValues, result.Permanent, result.PreserveMethod);
        }
        return base.ExecuteAsync(context, result);
    }
}

这个方法会在服务器端处理重定向请求时自动替换路径,无需新增页面文件。

为什么你的MapGet方法无效?

你之前尝试的app.MapGet("/Index", () => Results.Redirect("/_Host"))是客户端访问/Index时的重定向,但Identity代码的RedirectToPage("/Index")是服务器端试图找到对应的Razor Page,此时还未生成客户端跳转响应就已报错,所以该方法无法触发。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:07:37