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

/ [随笔分类]Asp.Net Core / 没有评论 / 224 浏览

在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

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

        </div>