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

Blazor WebAssembly 读取appsettings.json报文件未找到问题排查

问题根因
  • 运行环境不匹配:你当前使用的手动构建配置的逻辑,是ASP.NET Core服务端/控制台应用的实现方式,完全不适配Blazor WebAssembly的浏览器运行环境。WASM代码全部在浏览器沙箱中执行,没有本地文件系统的访问权限,Directory.GetCurrentDirectory()无法映射到浏览器可访问的静态资源路径,手动加载本地json文件的逻辑会直接失败,导致后续配置绑定拿到空值,DI解析服务时触发空引用类的错误。
  • 静态资源路径不符合规则:Blazor WASM项目中需要被浏览器访问的静态文件(包括json配置)必须存放在wwwroot目录下,存放在项目根目录的appsettings.json默认不会被打包到发布输出中,浏览器无法正常请求到对应文件。
  • 配置体系相互隔离:你手动创建的Configuration实例,和WebAssemblyHostBuilder内置的配置系统是相互独立的,就算手动加载逻辑能跑通,也无法和Blazor本身的环境变量、内置配置逻辑打通。
修复方案
  • 第一步:调整配置文件存放位置
    • 将项目根目录下的appsettings.json移动到wwwroot目录下,设置文件属性的「复制到输出目录」为「如果较新则复制」,确保构建过程中文件会被同步到静态资源输出目录。
  • 第二步:替换错误的手动配置加载逻辑,使用Blazor WASM内置的配置能力
    • 删除所有手动构建Configuration的冗余代码,通过WebAssemblyHostBuilder自带的配置方法加载json文件,正确的Program.cs实现参考:
public static async Task Main(string[] args)
{
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("#app");

    // 内置加载wwwroot路径下的appsettings.json,无需手动处理文件路径
    builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);

    builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) })
        .AddScoped<IAuthenticationService, AuthenticationService>();

    // 绑定Endpoints节点的强类型配置,两种注册方式二选一即可
    // 方式1:使用官方推荐的Options模式注册
    builder.Services.Configure<EndpointSettings>(
        builder.Configuration.GetSection("Endpoints")
    );
    // 方式2:直接注册为瞬态实例
    // builder.Services.AddTransient(_ => 
    //     builder.Configuration.GetSection("Endpoints").Get<EndpointSettings>()
    // );

    builder.Services.AddTransient<IAuthClient, AuthClient>();

    await builder.Build().RunAsync();
}
  • 注意事项:
    • 内置配置系统会自动适配浏览器的静态资源请求逻辑,从wwwroot目录拉取配置文件,不存在沙箱权限的问题。
    • 如果需要区分不同运行环境的配置,可以在wwwroot下额外新增对应环境的json文件(比如appsettings.Development.json),开发调试时会自动优先加载环境专属的配置值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 23:15:09