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

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

  • 相关阅读:
    boost::asio中的implementation_type介绍
    boost::asio::io_service::run学习笔记
    vim使用笔记
    进程、线程运行状态查看包括线程在cpu上运行情况
    c++自旋锁——学习笔记
    grep搜索过滤指定目录
    /usr/bin/ld: cannot find -lstdc++ -lz问题
    linux下条件变量使用笔记
    map使用笔记
    关于友元函数在类内定义的问题--笔记
  • 原文地址:https://www.cnblogs.com/CoderAyu/p/8490132.html
Copyright © 2011-2022 走看看