SuperAPI AI 工具集

convert-blazor-server-to-webapp

编程与开发

查看项目

更新于 10-16 00:04

技能介绍

用途:把使用 AddServerSideBlazor/MapBlazorHub 和 _Host.cshtml 的旧版 Blazor Server 应用,转换为采用 AddRazorComponents/MapRazorComponents、以 App.razor 为根组件的 .NET 8+ Blazor Web App,并保留 InteractiveServer 交互模式。适用于从 .NET 6/7 迁移、希望采用按组件渲染模式、增强导航与流式渲染等新特性的项目;若已是 Blazor Web App、使用 WebAssembly、需保留旧托管模型或目标为 .NET Framework,则不应使用。

主要步骤:1)更新 .csproj 的 TFM 与相关包版本;2)把原 App.razor 中的 Router 内容移至新建 Routes.razor;3)将 Pages/_Host.cshtml 的 HTML 外壳转为 App.razor 组件,替换 HeadOutlet、App 与 environment 标签帮助器,脚本改为 _framework/blazor.web.js,base 改为 "/",并删除 _Host.cshtml;4)在 Program.cs 中用 AddRazorComponents().AddInteractiveServerComponents() 替换 AddServerSideBlazor,用 MapRazorComponents<App>().AddInteractiveServerRenderMode() 替换 MapBlazorHub,删除 MapFallbackToPage("/_Host") 与 UseRouting,添加 UseAntiforgery;5)如原用 CascadingAuthenticationState 组件包裹,改为 AddCascadingAuthenticationState 服务注册。可选优化(非必需)包括 MapStaticAssets、StreamRendering 和 CSS 隔离链接更新。

验证:构建目标框架无编译错误,确认不再出现 AddServerSideBlazor、MapBlazorHub、MapFallbackToPage、blazor.server.js、_Host.cshtml,并运行验证页面、交互、导航及身份验证流程。

限制:反伪造中间件须置于 UseAuthentication/UseAuthorization 之后,否则表单 POST 会返回 400;原使用 Server(非 ServerPrerendered)时需用 new InteractiveServerRenderMode(prerender: false) 保持不预渲染;circuit、hub 与详细错误选项需迁移到 AddInteractiveServerComponents,否则静默丢失。具体包版本、平台与价格等资料暂未提供。