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

Blazor WebAssembly如何读取Razor类库中的JSON静态文件

你遇到的异常本质是注入的HttpClient实例未配置BaseAddress,无法解析相对路径请求,和静态资源路径本身的写法关联不大,可按以下步骤排查修复:

  1. 修复HttpClient配置
    打开你的Blazor WASM主项目的Program.cs文件,确认存在以下HttpClient注册逻辑(项目模板默认自带,若手动修改过注册逻辑可能会丢失):
builder.Services.AddScoped(sp => new HttpClient 
{ 
    BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) 
});

这段配置会让所有通过依赖注入拿到的HttpClient默认以当前应用的根地址作为请求前缀,和模板里读取自带weather.json的逻辑完全一致。

  1. 确认静态资源请求路径写法正确
    Razor类库的wwwroot下的静态资源,访问路径固定为 _content/[类库的程序集名称]/[文件路径],你最开始的写法逻辑是对的,不要去掉_content前缀,去掉后会默认去主项目的wwwroot目录查找文件,找不到会报404。
    示例正确写法(假设你的Razor类库程序集名为My.Shared.Lib):
protected async override Task OnInitializedAsync()
{
    // 路径里替换为你自己的类库程序集名,不要保留占位符
    MenuItems = await Http.GetFromJsonAsync<List<MenuItem>>("_content/My.Shared.Lib/sitemap.json");
    await base.OnInitializedAsync();
}
  1. 验证Razor类库的静态资产配置
    如果配置完上面两步还是报错,检查Razor类库的配置:
  • 确认sitemap.json确实放在类库的wwwroot根目录下
  • 右键点击sitemap.json,查看属性,确认「生成操作」是内容,「复制到输出目录」是如果较新则复制(新版.NET SDK放在wwwroot下的文件默认就是这个配置,不需要手动改,如果你手动改了文件属性要改回来)
  • 可以直接在浏览器地址栏输入{你的应用根地址}/_content/[类库程序集名]/sitemap.json,如果能正常返回JSON内容,说明静态资源配置没有问题。

内容的提问来源于stack exchange,提问作者Mike T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:45:05