zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    Linux下架构高可用性网络----HA+LB+lvs
    MacBook如何用Parallels Desktop安装windows7/8
    Win10如何彻底禁用小娜?彻底禁用小娜的方法
    安卓手机微信发不出去怎么办 微信不能发信息怎么办
    计算机名、主机名、用户账户名与NetBIOS名有什么区别
    安装corel x8提示你已安装了另外一个版本
    ssh整合问题总结--在添加商品模块实现图片(文件)的上传
    代理设计模式之静态代理与动态代理(超..)详解
    Java基础--反射机制的知识点梳理
    ssh整合问题总结--运行项目时报java.lang.StackOverflowError(堆栈溢出)异常
  • 原文地址:https://www.cnblogs.com/CoderAyu/p/8490132.html
Copyright © 2011-2022 走看看