.NET 6 Blazor WebAssembly新项目无法找到appsettings.json
Blazor WebAssembly .NET6 找不到appsettings.json 问题解决
你遇到的错误核心原因是Blazor WebAssembly运行在浏览器沙箱环境中,无法直接访问本地文件系统,你的代码使用了服务器端ASP.NET Core的配置加载逻辑,不适用于WASM场景,同时配置文件的存放位置也不符合要求。
1. 修正配置文件位置
将项目根目录下的appsettings.json移动到wwwroot文件夹中——Blazor WASM的所有静态资源(包括配置文件)必须放在wwwroot目录下,才能被浏览器正常访问。
2. 简化Program.cs中的配置加载代码
WebAssemblyHostBuilder.CreateDefault(args)已经默认完成了以下配置加载工作,无需手动重复添加:
- 加载
wwwroot/appsettings.json - 加载
wwwroot/appsettings.{环境名}.json(文件存在时) - 加载浏览器URL中的查询参数配置
修改后的Program.cs代码:
using DataReload.Client; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add<App>("#app"); builder.RootComponents.Add<HeadOutlet>("head::after"); builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); // 直接使用已加载的配置,无需手动添加JsonFile var defaultConn = builder.Configuration.GetConnectionString("DefaultDatabaseConnection"); var reportConn = builder.Configuration.GetConnectionString("ReportDatabaseConnection"); await builder.Build().RunAsync();
3. 确认配置文件属性设置
右键wwwroot/appsettings.json打开属性面板:
- 将「复制到输出目录」设置为「如果较新则复制」或「始终复制」
- 将「生成操作」设置为「内容」
自定义配置加载说明(可选)
如果需要加载非默认路径的配置文件,不能直接用AddJsonFile读取本地路径,需通过HttpClient发起HTTP请求加载:
var http = builder.Services.BuildServiceProvider().GetRequiredService<HttpClient>(); var configStream = await http.GetStreamAsync("custom-settings.json"); builder.Configuration.AddJsonStream(configStream);
内容的提问来源于stack exchange,提问作者EB.
相关产品推荐
相关产品推荐

