在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

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

最新文章

  1. 例解 Linux cd 命令
  2. Nginx配置SSL证书部署HTTPS网站
  3. NSError
  4. Dubbo学习
  5. “用户、组或角色'XXX'在当前数据库中已存在”问题
  6. Spring知识点总结大全(1)
  7. 自己画WinForm 皮肤包括默认控件
  8. 【问题】R文件报错原因及解决办法 (转)
  9. ios里的UIActionSheet的使用
  10. epub显示特殊字体
  11. 【转帖】理解 Linux 的虚拟内存
  12. 译:3.RabbitMQ Java Client 之 Publish/Subscribe(发布和订阅)
  13. Linux命令执行顺序— ||和&&和; 比较
  14. 禁止选中文本JS
  15. Final阶段第1周/共1周 Scrum立会报告+燃尽图 01
  16. Qt常用类及类方法简介之 QAction类
  17. n&&m and n||m 的区别
  18. C# 小软件部分(二)
  19. python学习笔记之—— calendar(日历)模块
  20. 【laravel5.4】git上clone项目到本地,配置和运行 项目报错:../vendor/aotuload.php不存在

热门文章

  1. bzoj 4826: [Hnoi2017]影魔 [主席树 单调栈]
  2. 阿里云学习之API网关
  3. JSON工具类
  4. Dagger2 使用全解析
  5. Discuz的安装与使用
  6. VS2015 (C/C++) 生成的程序,不能在server2008上运行
  7. 洛谷P1854 花店橱窗布置 分析+题解代码
  8. Python:注释
  9. [记录]CentOS搭建SVN服务器(主从同步)
  10. 在Ubuntu上安装PHPStudy组件