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

.NET 10安装后.NET 9 Blazor项目blazor.server.js报404求助

解决方案:.NET10环境下.NET9 Blazor Server项目blazor.server.js 404问题

问题核心

你的情况是典型的多SDK环境下,高版本SDK接管低版本目标框架项目构建导致的兼容性问题。.NET10调整了Blazor资源的托管逻辑,当系统中存在.NET10 SDK时,即使项目目标是.NET9,构建工具会默认使用最新SDK处理,导致资源路径生成规则与旧项目配置不匹配,触发404错误。

修复步骤

1. 锁定项目使用的SDK版本

在项目根目录创建/修改global.json文件,强制指定使用.NET9 SDK,避免被.NET10接管:

{
  "sdk": {
    "version": "9.0.100",
    "rollForward": "disable"
  }
}
  • version填写你安装的.NET9 SDK具体版本(可通过dotnet --list-sdks命令查看)
  • rollForward: disable确保不会自动升级到更高版本SDK

2. 验证并修正资源引用与中间件配置

  • 打开_Host.cshtml,确认blazor.server.js的引用路径为.NET9标准格式:
    <script src="_framework/blazor.server.js"></script>
    
  • 检查Program.cs中的中间件顺序,确保静态文件与Blazor中间件的顺序正确:
    var builder = WebApplication.CreateBuilder(args);
    
    // 添加服务...
    
    var app = builder.Build();
    
    // 静态文件托管必须在Blazor中间件之前
    app.UseStaticFiles();
    app.UseRouting();
    
    // Blazor Hub与路由配置
    app.MapBlazorHub();
    app.MapFallbackToPage("/_Host");
    
    app.Run();
    

3. 清理构建缓存

  • 删除项目目录下的bin和obj文件夹
  • 执行命令清理NuGet缓存:
    dotnet nuget locals all --clear
    
  • 重新编译运行项目,排除旧构建残留的影响

4. 明确项目框架配置

在项目的.csproj文件中添加以下配置,强化目标框架的绑定:

<PropertyGroup>
  <TargetFramework>net9.0</TargetFramework>
  <RuntimeFrameworkVersion>9.0.0</RuntimeFrameworkVersion>
  <DisableSdkAutoLoading>true</DisableSdkAutoLoading>
</PropertyGroup>
  • RuntimeFrameworkVersion强制指定运行时版本
  • DisableSdkAutoLoading禁止自动加载更高版本SDK

补充说明

你提到有的.NET9项目能正常运行,大概率是这些项目已经配置了global.json,或者资源路由、中间件设置恰好兼容.NET10的规则。而大型项目通常存在更多自定义配置(比如第三方组件、静态资源路由重写等),更容易受到SDK版本变更的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 01:27:09