ASP.NET Core-Environment、IWebHostEnvironment、IApplicationLifetime

Environment

静态类,提供有关当前环境的信息和操作方法和平台。 帮助开发者获取当前运行环境和平台的各种信息。无论是调试程序、处理路径还是与操作系统交互,Environment 都能派上大用场!
属性:

属性名 描述
CommandLine 获取启动当前进程的完整命令行字符串。
CurrentDirectory 获取或设置当前工作目录。
ExitCode 获取或设置用于终止当前进程的退出代码。
HasShutdownStarted 检查系统是否已开始关闭。
Is64BitOperatingSystem 判断操作系统是否为 64 位。
Is64BitProcess 判断当前进程是否为 64 位。
MachineName 获取运行当前应用程序的计算机名称。
NewLine 获取当前环境中的换行符(如 \r\n\n)。
OSVersion 获取描述当前操作系统的对象,包含平台、版本号等信息。
StackTrace 获取当前堆栈跟踪的字符串表示形式。
SystemDirectory 获取系统目录的路径。
TickCount 获取自系统启动以来经过的毫秒数。
UserDomainName 获取当前用户所属域的名称。
UserInteractive 判断当前程序是否正在与用户交互。
UserName 获取当前用户的安全上下文名称。
Version 获取描述公共语言运行时版本的对象。
WorkingSet 获取当前进程的工作集大小(以字节为单位)。

方法:

方法名 描述
ExpandEnvironmentVariables 将字符串中的环境变量替换为其值。
GetCommandLineArgs 获取包含命令行参数的字符串数组。
GetEnvironmentVariable 获取指定环境变量的值。
GetEnvironmentVariables 获取所有环境变量的字典集合。
GetFolderPath 获取指定特殊文件夹的路径(如临时文件夹、桌面等)。
GetLogicalDrives 获取系统中所有逻辑驱动器的字符串数组。
GetSystemDirectory 获取系统目录的路径。
Exit 终止当前进程,并将指定的退出代码返回给操作系统。
System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");//读取环境变量

IWebHostEnvironment

IWebHostEnvironment接口中是一些该应用程序的环境信息,包括程序名称信息,根目录,环境名称 等等基本信息
IWebHostEnvironment接口继承IHostEnvironment接口

await context.Response.WriteAsync($"name=\"{env.ApplicationName}\"");
await context.Response.WriteAsync($"name=\"{env.ContentRootFileProvider}\"");
//网站根目录
await context.Response.WriteAsync($"name=\"{env.ContentRootPath}\"");
await context.Response.WriteAsync($"name=\"{env.EnvironmentName}\"");
//wwwroot目录对应的FileProvider
await context.Response.WriteAsync($"name=\"{env.WebRootFileProvider}\"");
//wwwroot目录
await context.Response.WriteAsync($"name=\"{env.WebRootPath}\"");

env.IsDevelopment();//是否开发环境,ASPNETCORE_ENVIRONMENT环境变量值是否是Development
env.IsProduction();//是否生产环境,ASPNETCORE_ENVIRONMENT环境变量值是否是Production
env.IsStaging();
env.IsEnvironment("ok");//ASPNETCORE_ENVIRONMENT环境变量值是否是ok

ASP.NET Core 在应用启动时读取环境变量 ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架仅支持三个值:Development(开发)、Staging(测试)、Production(生产)。 如果未设置 ASPNETCORE_ENVIRONMENT,则默认为 Production(即生产环境)

env.IsDevelopment();//是否开发环境
env.IsProduction();//是否生产环境
env.IsStaging();//是否测试环境
env.IsEnvironment("xxx");//是否自定义环境

设置环境变量的三种方法:

1、在CMD中设置(临时): set ASPNETCORE_ENVIRONMENT=Staging

2、电脑环境变量全局设置:我的电脑属性→环境变量→ASPNETCORE_ENVIRONMENT :Development

3、代码层次launchSettings.json中配置,配置文件中有两个选项,一个是IIS Express,一个是项目名称,这两个对应上面VS工具栏不同的启动方式,省略的话默认为 Production环境。

注意:前两种方式只适用于通过命令启动的模式,如: dotnet ManyEnvironment.dll

IApplicationLifetime

IApplicationLifetime是用来绑定应用程序的运行时事件的

applicationLifetime.ApplicationStarted.Register(() =>
            {
                Console.WriteLine("Strated");
            });
applicationLifetime.ApplicationStopping.Register(() =>
            {
                Console.WriteLine("Stoping");
            });
applicationLifetime.ApplicationStopped.Register(() =>
            {
                Console.WriteLine("Strated");
       }
 IHostApplicationLifetime:与IApplicationLifetime接口作用相同
posted @ 2020-01-03 13:47  .Neterr  阅读(4076)  评论(0)    收藏  举报