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

.NET5迁移至.NET6后Visual Studio 2022 Hot Reload应用变更成功但页面不刷新

.NET 5迁移.NET 6后Hot Reload提示生效但页面无更新解决方案

核心原因

迁移项目未适配.NET 6的热重载全链路逻辑,要么是服务器端热重载中间件未正确注册,要么是浏览器端缺少监听更新的脚本,导致代码变更已经编译生效,但UI没有触发刷新。

解决步骤

    1. 补全热重载中间件配置
      打开Program.cs,找到开发环境判断代码块,确保已注册UseHotReload中间件,顺序必须放在静态资源中间件之后、路由/端点映射之前:
    if (app.Environment.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseStaticFiles();
        // 新增此行,Blazor项目额外加app.UseWebAssemblyDebugging()
        app.UseHotReload();
        
        app.UseRouting();
        app.UseEndpoints(endpoints => { ... });
    }
    
    不要在系统环境变量或项目启动配置中设置ASPNETCORE_HOTRELOAD_ENABLE = 0,该变量会全局禁用热重载功能。
    1. 调整响应压缩中间件顺序
      如果项目启用了响应压缩,将app.UseResponseCompression()的调用位置移到app.UseHotReload()之后,热重载的增量更新包被压缩后会导致浏览器无法识别变更。
    1. 清理旧版本编译缓存
      关闭VS后删除项目根目录的bin、obj文件夹,执行dotnet clean && dotnet restore重新还原依赖,避免.NET 5的残留编译产物干扰热重载逻辑。
    1. 补全浏览器端热重载脚本
      启动应用后打开浏览器控制台,若没有[Hot Reload] Connected的日志输出,在开发环境的布局页(_Layout.cshtml/App.razor)末尾添加以下脚本:
    <environment include="Development">
        <script src="_framework/aspnetcore-browser-refresh.js"></script>
    </environment>
    
    该脚本负责监听服务端的热重载通知,自动刷新页面或更新UI。

特殊场景说明

  • Blazor项目需要确认Properties/launchSettings.json中对应启动配置的hotReloadProfile值为aspnetcore(Blazor Server)或blazorwasm(Blazor WebAssembly),不要使用自定义值。
  • 并非所有代码修改都支持热重载,新增类、修改方法签名、新增枚举成员等属于 rude edit 操作,即使VS提示变更应用成功,也需要全量重启应用才能生效,不会触发UI自动更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:01