.net 10 下测试 asp.net core 的配置加载顺序
环境window11powershell.net 10Microsoft.NET.Sdk.Webdonet run file一、先说结论下面是针对同一个配置项ConnectionStrings:esd asp.net core 下加载的优先级命令行dotnet run app.cs ConnectionStrings:esdcmdarglaunchSettings.json 中的环境变量配置最后有个补充实验不带前缀的环境变量$env:ConnectionStrings:esddirect_envappsettings.Dev.json中的已经通过 ASPNETCORE_ENVIRONMENTDev 指定appsettings.json中的带DOTNET_前缀的环境变量$env:DOTNET_ConnectionStrings:esdDOTNET_env带ASPNETCORE_前缀的环境变量$env:ASPNETCORE_ConnectionStrings:esdASPNETCORE_env二、实验基础在 powershell 中设置和清除环境变量如下操作$env:ASPNETCORE_ENVIRONMENTDev$env:ASPNETCORE_ENVIRONMENT$nullASPNETCORE_ENVIRONMENT: 是决定 asp.net core 程序加载 appsettings.json 还是 appsettings.Dev.json三、开始实验3.1 准备代码如下想动手的可拷贝#:sdk Microsoft.NET.Sdk.WebvarbuilderWebApplication.CreateBuilder(args);varconnbuilder.Configuration[ConnectionStrings:esd];Console.WriteLine(conn);命令如下PS D:\test$env:ConnectionStrings:esddirect_envPS D:\test$env:DOTNET_ConnectionStrings:esdDOTNET_envPS D:\test$env:ASPNETCORE_ConnectionStrings:esdASPNETCORE_envPS D:\test$env:ASPNETCORE_ENVIRONMENTDevPS D:\testGet-ChildItem env:*ConnectionStrings*, env:ASPNETCORE_ENVIRONMENT Name Value ---- ----- ASPNETCORE_ConnectionString... ASPNETCORE_env ConnectionStrings:esd direct_env DOTNET_ConnectionStrings:esd DOTNET_env ASPNETCORE_ENVIRONMENT Dev PS D:\test3.2 开始实验先试试带上命令行参数观察可见命令行的优先级是最高的去掉命令行参数后下面环境变量与appsettings[.env].json同台竞争结果appsettings[.env].json没有竞争过不带前缀的环境变量ConnectionStrings:esd删除环境不带前缀的环境变量ConnectionStrings:esd后结果排到了appsettings.dev.json盲猜下一个应该轮到appsettings.json删除环境变量ASPNETCORE_ENVIRONMENT后结果没有意外到了appsettings.json下面两个带前缀的环境变量我们用的不多可以继续往下看删除appsettings.json文件后结果环境变量DOTNET_前缀 要优于ASPNETCORE_前缀再删除ASPNETCORE_前缀 的结果最后到ASPNETCORE_前缀的了四、补充一般我们本地开发会有launchSettings.json文件如如果他里面也有配置那么优先级如何呢先说结论launchSettings.json里的配置仅次于命令行参数实验基础在dotnet run file模式中launchSettings.json要放在 app.cs 同目录下且名字跟随 *.cs文件名固定这里是app.run.json真实实验结果

相关新闻

最新新闻

日新闻

周新闻

月新闻