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

Blazor WASM(ASP.NET Core托管)读取appsettings.json配置值为空问题

问题描述

尝试从appsettings.json读取配置值时,FileStorage配置始终返回NULL,相关代码如下:

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },

  "AllowedHosts": "*",
  "FileStorage": "D:\\Temp\\Storage"
}

Razor页面代码

@page "/"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
<h3>Configuration</h3>
<h4>File Storage: @Configuration["FileStorage"]</h4>

Program.cs代码

var builder = WebApplication.CreateBuilder(args);
builder.Configuration.SetBasePath(Directory.GetCurrentDirectory());
builder.Configuration.AddJsonFile(
"appsettings.json", optional: true, 
reloadOnChange: true);
问题原因及解决办法
  • 重复加载配置导致路径异常:WebApplication.CreateBuilder(args)已经默认自动加载了appsettings.json等配置文件,手动调用SetBasePath和AddJsonFile可能因运行时工作目录与预期不符,加载了不存在的配置文件,进而读取不到值。
  • 缺少Razor Pages服务注册:如果Program.cs中未添加Razor Pages服务,DI容器无法正确解析IConfiguration的注入,也会导致读取失败。

具体修复步骤:

  1. 简化Program.cs配置逻辑,移除手动配置加载代码,保留默认机制并添加Razor Pages服务:
var builder = WebApplication.CreateBuilder(args);

// 注册Razor Pages服务,确保IConfiguration可被正常注入
builder.Services.AddRazorPages();

var app = builder.Build();

// 配置HTTP请求管道
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();
  1. 检查appsettings.json文件属性:右键该文件 → 属性 → 将「复制到输出目录」设置为如果较新则复制或始终复制,确保程序运行时能在输出目录找到配置文件。

  2. 验证读取逻辑:Razor页面中的@inject IConfiguration Configuration和@Configuration["FileStorage"]写法是正确的,完成上述修复后即可正常读取配置值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:38:13