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

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

  • 相关阅读:
    ASP.NET备份还原数据库
    ASP.NET的运行原理与运行机制
    Asp.net WebPages框架运行原理浅析(转)
    不要盲目选择定时器
    C# 如何用计时器Timer控件实现停留几秒再做切换窗体的操作
    使用System.Timers.Timer类实现程序定时执行
    C#启动一个外部程序(1)-WinExec
    几种类型的db,以及最新的db排名,看一下
    SharePoint 2013 讨论板列表"Connect to Outlook" 不可用解决方案
    Java可视化编程,基于布局管理器的UI设计
  • 原文地址:https://www.cnblogs.com/CoderAyu/p/8490132.html
Copyright © 2011-2022 走看看