ASP.NET Core轻松入门之Configure中IHostingEnvironment和IApplicationLifetime的使用

来源:互联网 发布:开农村淘宝靠什么赚钱 编辑:程序博客网 时间:2024/06/08 14:33

在StratUp.cs的Configure方法中,除了 常用的参数除了IApplicationBuilder和在我上一篇文章中提到的Iconfiguration点击打开链接

外  还有


IHostingEnvironment和IApplicationLifetime

那么这两个参数有什么用以及怎么用呢?

首先我们想建一个ASP.NET Core的空项目

然后到Startup.cs中,在Configure方法中加入IHostingEnvironment   env和IApplicationLifetime  applicationLifetime两个参数

  public void Configure(IApplicationBuilder app, IHostingEnvironment env,IApplicationLifetime applicationLifetime)

我们来看看env能点出哪些方法

没错,我们可以看到这基本是一些该应用程序的环境信息,包括程序名称信息,根目录,环境名称 等等基本信息,我们以该程序为例输出该程序的这些信息看看。

修改app.run中的代码

                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}\"");                await context.Response.WriteAsync($"name=\"{env.WebRootFileProvider}\"");   //不一一输出了  原理一样的
运行  ,看看输出了哪些内容

所以说,IHostingEnvironment就是保存了asp.net core程序的基本环境信息的。


我们再来看看IApplicationLifetime   该方法是用来绑定应用程序的运行时事件的 我们这样来修改Configure中的代码

  public void Configure(IApplicationBuilder app, IHostingEnvironment env,IConfiguration configuration,IApplicationLifetime applicationLifetime)        {            if (env.IsDevelopment())            {                app.UseDeveloperExceptionPage();            }            applicationLifetime.ApplicationStarted.Register(() =>            {                Console.WriteLine("Strated");            });            applicationLifetime.ApplicationStopping.Register(() =>            {                Console.WriteLine("Stoping");            });            applicationLifetime.ApplicationStopped.Register(() =>            {                Console.WriteLine("Strated");            });            app.Run(async (context) =>            {                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}\"");                await context.Response.WriteAsync($"name=\"{env.WebRootFileProvider}\"");   //不一一输出了  原理一样的                //await context.Response.WriteAsync($"connectionString=\"{configuration["connectionString:defaultConnectionString"]}\"");                //await context.Response.WriteAsync($"name=\"{configuration["name"]}\"");                await context.Response.WriteAsync("Hello World!");            });        }

给应用程序再启动后,停止中,停止后,分别绑定了控制台输出事件,我们运行看看输出结果:


可以看到  再控制台中  分别再应用程序的启动后  关闭中  关闭后进行了内容的输出,所以我们得出结论  IApplicationLifetime   该方法是用来绑定应用程序的运行时事件的。


该项目的完整github代码:https://github.com/liuzhenyulive/WebHost

有任何疑问欢迎再文章下方留言。

阅读全文
0 0
原创粉丝点击