在ASP.NET Core应用开发中,环境变量和启动设置是管理应用运行参数的重要手段,能够支持应用在不同环境下灵活调整配置,无需修改代码即可适配开发、测试、生产等场景的需求。

启动设置的核心文件launchSettings.json
启动设置主要存储在项目根目录下的launchSettings.json文件中,该文件仅在开发阶段生效,不会被打包到发布产物中,主要用于配置应用启动时的参数,比如启动的端口、环境变量、启动的浏览器等。
一个典型的launchSettings.json文件结构如下:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5086",
"sslPort": 44388
}
},
"profiles": {
"HttpProfile": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:5000;https://localhost:5001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
其中profiles节点定义了不同的启动配置,每个配置可以单独设置ASPNETCORE_ENVIRONMENT环境变量,也可以自定义其他环境变量,applicationUrl用于指定应用启动监听的端口。
环境变量的作用与使用方式
ASP.NET Core内置了对ASPNETCORE_ENVIRONMENT环境变量的支持,该变量的值决定了应用当前的运行环境,框架会根据该值加载对应的配置文件,比如appsettings.Development.json、appsettings.Production.json等。
设置环境变量的方式
- 在
launchSettings.json中配置,仅对当前开发启动生效 - 在操作系统中全局设置,Windows可以通过系统属性-高级-环境变量添加,Linux和macOS可以通过export命令设置
- 在应用启动时通过命令行临时设置,比如
ASPNETCORE_ENVIRONMENT=Production dotnet run
在代码中读取环境变量
可以通过依赖注入获取IWebHostEnvironment实例来读取当前环境信息,示例代码如下:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
namespace EnvDemo.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class EnvController : ControllerBase
{
private readonly IWebHostEnvironment _env;
public EnvController(IWebHostEnvironment env)
{
_env = env;
}
[HttpGet]
public string Get()
{
return $"当前运行环境:{_env.EnvironmentName},是否是开发环境:{_env.IsDevelopment()}";
}
}
}
自定义环境变量与配置绑定
除了框架内置的环境变量,开发者还可以自定义环境变量来存储业务相关的配置,然后通过配置系统将环境变量映射到应用的配置对象中。
首先在launchSettings.json中添加自定义环境变量:
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DemoOption__Timeout": "30",
"DemoOption__MaxCount": "100"
}
然后定义对应的配置类:
public class DemoOption
{
public int Timeout { get; set; }
public int MaxCount { get; set; }
}
在Program.cs中注册配置:
var builder = WebApplication.CreateBuilder(args);
// 加载环境变量配置,默认前缀是空,这里可以指定前缀,也可以不指定
builder.Configuration.AddEnvironmentVariables();
// 绑定配置到DemoOption类
builder.Services.Configure<DemoOption>(builder.Configuration.GetSection("DemoOption"));
var app = builder.Build();
app.MapGet("/option", (IOptions<DemoOption> options) =>
{
return $"超时时间:{options.Value.Timeout},最大数量:{options.Value.MaxCount}";
});
app.Run();
启动设置与环境变量的配合技巧
在实际开发中,通常会结合两者实现多环境配置:
- 在
launchSettings.json中为不同启动配置设置不同的ASPNETCORE_ENVIRONMENT值,比如开发配置用Development,测试配置用Staging - 不同环境对应的配置文件
appsettings.{EnvironmentName}.json中存放环境相关的配置,比如数据库连接字符串、第三方服务地址等 - 敏感配置比如数据库密码等,不要写在配置文件中,而是通过环境变量在部署时动态设置,避免敏感信息泄露
需要注意的是,launchSettings.json仅用于开发阶段,生产环境部署时,需要通过系统环境变量或者容器环境变量来设置ASPNETCORE_ENVIRONMENT以及其他自定义环境变量,确保应用能够正确识别运行环境。
ASP.NET_Core环境变量启动设置launchSettings.json配置修改时间:2026-07-06 01:27:26