Blazor应用按环境配置分Server与WASM两类:Server沿用ASP.NET Core机制,自动加载appsettings.{Environment}.json;WASM需手动AddJsonFile并注入环境名,敏感配置须后端提供。
Blazor 应用在不同环境(如开发、测试、生产)中使用不同配置,核心思路和 ASP.NET Core 一致:依靠 环境变量(ASPNETCORE_ENVIRONMENT) + 分环境的配置文件(appsettings.{Environment}.json),并结合 Blazor 的启动逻辑加载对应配置。
Blazor Server 是标准的 ASP.NET Core 应用,配置方式完全相同:
appsettings.json(通用配置)和 appsettings.Development.json、appsettings.Production.json 等环境专属文件Program.cs 中调用 builder.Configuration 加载配置,无需额外操作 —— 框架会自动根据 ASPNETCORE_ENVIRONMENT 值合并对应文件appsettings.Development.json 会自动覆盖 appsettings.json 中的同名键Blazor WASM 运行在浏览器中,没有服务器端环境变量,也不能直接读取本地文件系统。它通过 HTTP 请求加载 JSON 配置,因此要按环境区分,关键在于:
appsettings.{Environment}.json 文件(如 appsettings.Staging.json)并部署到服务器同一目录下Program.cs 中显式调用 configuration.AddJsonFile 并传入带环境名的路径$(Configuration) 或自定义变量示例(WASM 的 Program.cs):
硬写 "Development" 或 "Production" 容易出错。推荐做法:
IWeb
HostEnvironment.Environment(已内置)WebAssemblyHostBuilder.HostEnvironment.Environment 获取(默认由 index.html 中的 window["blazor-environment"] 或构建时注入的 __env 决定)index.html 注入环境标识,或通过 JS interop 读取 location.hostname 映射环境(例如 dev.example.com → Development)数据库连接字符串、API 密钥等不应提交到代码库:
dotnet user-secrets(开发)或操作系统级环境变量(生产)替代 JSON 中的敏感项ApiBaseUri)放在 appsettings.{env}.json 中,这是安全且常见的做法基本上就这些。关键是分清 Blazor Server 和 WASM 的运行模型差异:Server 走标准 .NET 配置管道,WASM 则靠前端资源加载 + 构建时/运行时注入环境上下文。