专栏首页码农阿宇ASP.NET Core轻松入门之Configure中IHostingEnvironment和IApplicationLifetime的使用

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

在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 条评论
登录 后参与评论

相关文章

  • sql语句中的left join,right join,inner join的区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相...

    码农阿宇
  • 用户密码传输和存储的保护

    软件设计的过程中,用户的密码信息最为敏感,在进行用户登录验证时,除了将密码在传输的过程中,进行md5加密,避免密码明文传输过程中被截获外,还有一个就是密码在数据...

    码农阿宇
  • ASP.NET Core轻松入门之Middleware管道模型

    Middleware指的是微软的的asp.net core的管道模型。其原理可以用微软官方的下图展示: ? 原理如上图,随着Request的发起,HttpCon...

    码农阿宇
  • 调参过程中的参数 学习率,权重衰减,冲量(learning_rate , weight_decay , momentum)

    无论是深度学习还是机器学习,大多情况下训练中都会遇到这几个参数,今天依据我自己的理解具体的总结一下,可能会存在错误,还请指正. learning_rate , ...

    Gxjun
  • PUE指标能准确衡量数据中心能效吗?-关于POE的设想-孙长青

    孙长青,注册暖通工程师,高级工程师,规划设计部总工程师,IDC单位设计总监等,有多年从事数据中心规划设计、咨询顾问、甲方自建设计部等全过程的实战经验,对数据中...

    数据中心DATACenter_PUE-POE
  • Django初探(二)

    之前写过一篇Django的介绍,简单部署之后就没有深入跟进了。 Django初探 上周末去广州参加技术大会,在往返的飞机上,自己调试了下Django里面的内容。...

    jeanron100
  • Git的使用教程(2)

    叶应是叶
  • 堆内存和栈内存

    在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作...

    用户2909867
  • 生信菜鸟团博客2周年精选文章集(5)seq-answer和bio-star论坛爬虫

    生信常用论坛seq-answer里面所有帖子爬取 生信常用论坛bio-star里面所有帖子爬取 这个是爬虫专题第一集,主要讲如何分析bio-star这个网站并爬...

    生信技能树
  • cmake:设置编译选项的讲究(add_compile_options和CMAKE_CXX_FLAGS的区别)

    版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10...

    用户1148648

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动