ASP.NET Core轻松入门之Configure中IHostingEnvironment和IApplicationLifetime的使用-阿里云开发者社区

开发者社区> 码农阿宇> 正文

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

简介: 在StratUp.cs的Configure方法中,除了 常用的参数除了IApplicationBuilder和在我上一篇文章中提到的Iconfiguration点击打开链接 外  还有 IHostingEnvironment和IApplicationLifetime 那么这两个参数有什么用以及怎么用呢? 首先我们想建一个ASP.
+关注继续查看

在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

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
linux中内存使用原理
首先介绍一下linux中内存是如何使用的。 当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存 来使用,也称为Swap。
684 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10081 0
ASP.NET Core轻松入门Bind读取配置文件到C#实例
首先新建一个ASP.NET Core空项目,命名为BindReader 然后 向项目中添加一个名为appsettings.json的json文件,为什么叫appsettings呢?  打开Program.
891 0
asp.net core轻松入门之MVC中Options读取配置文件
接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MVC服务并添加MVC路由 注册MVC的方法是在ConfigureServices中添加   services.
1191 0
害我查了半天的错误!av错误,小心Component对象使用Application当Owner
var  ConnectionService := TConnService;procedure TfrmMain.FormCreate(Sender: TObject);begin  ConnectionService := TConnService.
566 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10883 0
DBMS_APPLICATION_INFO包的使用
DBMS_APPLICATION_INFO是一个非常有用的程序包,他提供了通过V$SESSION 跟踪脚本运行情况的能力,该包允许你在v$session中的如下三列中填值: CLIENT_INFO,MODULE,ACTION,该包不仅提供了设置这些列值的过程...
746 0
一步步使用SAP CRM Application Enhancement Tool创建扩展字段
一步步使用SAP CRM Application Enhancement Tool创建扩展字段
12 0
【spring boot logback】日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么
本篇 将针对【日志使用自定义的logback-spring.xml文件后,application.properties中关于日志的相关配置还会起作用么】这一个主题进行探索。 这个测试项目是根据【spring boot】8.
1979 0
使用application log 分析navigation target解析错误
Created by Jerry Wang, last modified on Sep 20, 2015
31 0
+关注
码农阿宇
沉迷.Net,无法自拔
74
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载