NetCore中的环境变量的值取自于哪里
2021/8/27 6:36:05
本文主要是介绍NetCore中的环境变量的值取自于哪里,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
NetCore中的环境变量的值取自于哪里?
环境
- 操作系统 win10
- IIS 10
- net core 2.2 ,net core 3.0
分别生成了三个环境变量的配置文件:
以及测试代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.Run(async (context) => { context.Response.ContentType = "text/plain; charset=utf-8"; await context.Response.WriteAsync($"进程内环境变量:env.EnvironmentName={env.EnvironmentName}\n"); var myEnvironmentValue = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", EnvironmentVariableTarget.Machine); await context.Response.WriteAsync($"操作系统环境变量 ASPNETCORE_ENVIRONMENT={myEnvironmentValue ?? "没有找到"}\n"); var connectionString = Configuration["ConnectionStrings:RicoDbContext"]; await context.Response.WriteAsync($"数据库库连接字符串:{connectionString}\n"); var appId = Configuration["AppId"]; await context.Response.WriteAsync($"appId={appId ?? "没找到"}\n"); }); }
dotnet命令和环境变量
dotnet run
首先来使用dotnet run
命令运行一下,命令运行在如下目录:
>dotnet run Hosting environment: Development Content root path: D:\02-github\rocklee2015\RicoNetCore\000-NetCoreBaseSample\S01-MultiEnviromentConfig Now listening on: http://localhost:5001 Application started. Press Ctrl+C to shut down.
为啥环境是Development
呢?,因为是按顺序读取launchSettings
第一个值,如果将Staging
放第一个就不一样了。
可以看到结果,环境变量变更了:
>dotnet run Hosting environment: Staging Content root path: D:\02-github\rocklee2015\RicoNetCore\000-NetCoreBaseSample\S01-MultiEnviromentConfig Now listening on: http://localhost:5001 Application started. Press Ctrl+C to shut down.
dotnet run --launch-profile
也可以使用dotnet run --launch-profile <name>
自定义启动配置文件:
>dotnet run --launch-profile Production Hosting environment: Production Content root path: D:\02-github\rocklee2015\RicoNetCore\000-NetCoreBaseSample\S01-MultiEnviromentConfig Now listening on: http://localhost:5001 Application started. Press Ctrl+C to shut down.
浏览器打开http://localhost:5001
,可以看到效果:
env.EnvironmentName
的值是Production
刚才自定义的环境,操作系统的全局环境变量ASPNETCORE_ENVIRONMENT
值是Production
也是对的,因为我设置的就是这个:
切换一下当前窗口的启动配置文件:
>dotnet run --launch-profile Staging Hosting environment: Staging Content root path: D:\02-github\rocklee2015\RicoNetCore\000-NetCoreBaseSample\S01-MultiEnviromentConfig Now listening on: http://localhost:5001 Application started. Press Ctrl+C to shut down.
可以看到读取的配置文件只受当前窗口的启动配置文件影响,即launchSettings
文件。不受全局环境变量影响。
设置当前会话环境变量
在官方文档在 ASP.NET Core 中使用多个环境介绍中,可以在当前会话窗口的设置环境变量,使用以下命令:
set ASPNETCORE_ENVIRONMENT=Development
操作结果如下:
>set ASPNETCORE_ENVIRONMENT=Development >dotnet run Hosting environment: Staging Content root path: D:\02-github\rocklee2015\RicoNetCore\000-NetCoreBaseSample\S01-MultiEnviromentConfig Now listening on: http://localhost:5001 Application started. Press Ctrl+C to shut down.
当前窗口的全局环境变量似乎没有起作用!!
部署在IIS上
我将以上的项目发布成IIS部署包,结果如下:
可以看到使用的环境变量是Development
而不是默认的Production
,全局环境变量是Production
也没起什么作用?
发布配置文件与环境变量
官方说可以使用以下配置IIS的环境变量:
对于net core 2.2
版本来说一直报错HTTP Error 502.5 - Process Failure
(详见HTTP Error 500.30 - ANCM In-Process Start Failure)
疑问
- 可以确定
dotnet run
命令环境变量加载的是启动配置文件。 - iis 的部署环境环境变量加载于哪里?
- 全局环境变量,web.config环境量,启动配置文件
launchSettings
这三个取值优先级是怎样的?
这篇关于NetCore中的环境变量的值取自于哪里的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID