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

ASP.NET托管Blazor WASM升级.NET 6后Hot Reload触发空引用异常问题

Blazor WASM .NET 6 Hot Reload空引用错误解决方案

完整报错堆栈:

Error: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.AspNetCore.Components.WebAssembly.HotReload.WebAssemblyHotReload.ApplyHotReloadDelta(String moduleIdString, Byte[] metadataDelta, Byte[] ilDeta)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
--- End of stack trace from previous location ---
at Microsoft.JSInterop.Infrastructure.DotNetDispatcher.InvokeSynchronously(JSRuntime jsRuntime, DotNetInvocationInfo& callInfo, IDotNetObjectReference objectReference, String argsJson)
at Microsoft.JSInterop.Infrastructure.DotNetDispatcher.Invoke(JSRuntime jsRuntime, DotNetInvocationInfo& invocationInfo, String argsJson)
at Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime.InvokeDotNet(String assemblyName, String methodIdentifier, String dotNetObjectId, String argsJson)
at Object._convert_exception_for_method_call (https://localhost:44362/_framework/dotnet.6.0.0.qme34vl4fz.js:1:178709)
at Object._handle_exception_for_call (https://localhost:44362/_framework/dotnet.6.0.0.qme34vl4fz.js:1:180678)
at managed__Microsoft_AspNetCore_Components_WebAssembly__Microsoft_AspNetCore_Components_WebAssembly_Services_DefaultWebAssemblyJSRuntime_InvokeDotNet
at Object.invokeDotNetFromJS (https://localhost:44362/_framework/blazor.webassembly.js?version=32330328618b4ff08635274a6f31248c:1:42078)
at g (https://localhost:44362/_framework/blazor.webassembly.js?version=32330328618b4ff08635274a6f31248c:1:1618)
at Object.e.invokeMethod (https://localhost:44362/_framework/blazor.webassembly.js?version=32330328618b4ff08635274a6f31248c:1:2665)
at Object.St.Te._internal.applyHotReload (https://localhost:44362/_framework/blazor.webassembly.js?version=32330328618b4ff08635274a6f31248c:1:56100)
at https://localhost:44362/_framework/aspnetcore-browser-refresh.js:136:33
at Array.forEach ()
at applyBlazorDeltas (https://localhost:44362/_framework/aspnetcore-browser-refresh.js:134:12)

该问题是.NET 5升级.NET 6后配置不匹配、编译缓存残留导致的常见问题,按以下步骤排查修复:

  • 统一所有依赖包版本
    检查Client、Server、Shared三个项目的全部NuGet依赖,确保所有Microsoft.AspNetCore.*、Microsoft.Components.*相关包的版本完全一致,且均为6.0.x正式版,不存在5.x版本的残留包。
  • 清理全量编译缓存
    手动删除所有项目根目录下的bin、obj文件夹,删除ASP.NET Core托管Server项目的.vs隐藏文件夹,同时清理浏览器缓存,或按Ctrl+F5强制刷新页面加载最新的wasm资源。
  • 校验项目配置文件
    打开Blazor WASM Client项目的.csproj文件,确认包含以下配置属性:
    <PropertyGroup>
      <TargetFramework>net6.0</TargetFramework>
      <Nullable>enable</Nullable>
      <ImplicitUsings>enable</ImplicitUsings>
      <UseBlazorWebAssembly>true</UseBlazorWebAssembly>
    </PropertyGroup>
    
    再打开Server项目的Properties/launchSettings.json,确认运行配置中包含Hot Reload相关配置:
    "profiles": {
      "http": {
        "commandName": "Project",
        "dotnetRunMessages": true,
        "launchBrowser": true,
        "applicationUrl": "http://localhost:5000",
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "hotReloadProfile": "blazorwasm"
      },
      // https配置也要添加相同的hotReloadProfile属性
    }
    
  • 校验中间件配置
    确认Server项目的Program.cs在开发环境下已按正确顺序添加WebAssembly调试中间件:
    if (app.Environment.IsDevelopment())
    {
        app.UseWebAssemblyDebugging();
        // 其余开发环境专属中间件
    }
    
  • 重新运行项目
    完成上述配置后,先执行dotnet restore还原依赖,再通过VS2022启动或者运行dotnet watch run即可正常使用Hot Reload功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:15:08