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

如何将Blazor 6/7 Server应用迁移至Blazor 8 InteractiveServer?

将Blazor 6/7 Server应用迁移到Blazor 8 Interactive Server的核心变更

1. 升级项目基础环境

  • 安装.NET 8 SDK,修改项目文件(.csproj)的TargetFramework为net8.0
  • 更新所有NuGet依赖包至.NET 8兼容版本,重点更新Microsoft.AspNetCore.Components.Server等核心组件包

2. 重构Program.cs配置

  • 移除原builder.Services.AddServerSideBlazor(),替换为交互式服务注册:
    builder.Services.AddRazorComponents()
        .AddInteractiveServerComponents();
    
  • 替换原路由配置代码,启用交互式Server渲染模式:
    app.MapRazorComponents<App>()
        .AddInteractiveServerRenderMode();
    
  • 若需全局默认启用Interactive Server模式,可扩展配置:
    .AddInteractiveServerRenderMode(options =>
    {
        options.DefaultRenderMode = RenderMode.InteractiveServer;
    })
    

3. 配置组件渲染模式

  • 在根组件App.razor顶部添加属性,全局应用Interactive Server渲染:
    @attribute [RenderModeInteractiveServer]
    
  • 针对单个组件/页面设置渲染模式,直接在对应组件顶部添加上述属性即可
  • 移除_Host.cshtml中手动指定的render-mode="Server"参数

4. 防伪造逻辑适配修改

4.1 全局防伪造配置

  • 保留或调整Program.cs中的防伪造服务配置,按需自定义规则:
    builder.Services.AddAntiforgery(options =>
    {
        options.HeaderName = "X-CSRF-TOKEN"; // 自定义请求头名称
    });
    

4.2 API请求的令牌传递

  • 在需要调用API的组件中注入服务:
    @inject IAntiforgery Antiforgery
    @inject HttpClient Http
    
  • 获取令牌并添加到请求头,替代原Blazor Server的自动附带头逻辑:
    var tokens = await Antiforgery.GetTokensAsync();
    Http.DefaultRequestHeaders.Add(tokens.HeaderName, tokens.RequestToken);
    

4.3 表单提交的令牌处理

  • 移除原Razor页面中@Html.AntiForgeryToken()写法,Interactive Server组件中Blazor会自动为表单生成防伪造令牌;若需手动控制,可通过以下方式添加隐藏字段:
    var tokens = await Antiforgery.GetTokensAsync();
    <input type="hidden" name="@tokens.FormFieldName" value="@tokens.RequestToken" />
    

5. 其他细节调整

  • 更新_Imports.razor,添加必要的命名空间:
    @using Microsoft.AspNetCore.Components.Web.InteractiveServer
    
  • 移除原项目中Blazor Server特定配置(如_Host.cshtml中的autostart="false"等参数)
  • 测试组件生命周期方法(如OnInitializedAsync)、状态保持逻辑,确保交互式渲染下正常工作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:22:45