ASP.NET Core轻松入门之Configure中IHostingEnvironment和IApplicationLifetime的使用
2017-12-14 20:57
1016 查看
在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
4000
该方法是用来绑定应用程序的运行时事件的 我们这样来修改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
有任何疑问欢迎再文章下方留言。
外 还有
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
4000
该方法是用来绑定应用程序的运行时事件的 我们这样来修改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 Core轻松入门之Configure中IHostingEnvironment和IApplicationLifetime的使用
- 【ASP.NET Core快速入门】(七)WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
- 菜鸟入门【ASP.NET Core】7:WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
- ASP.NET Core 集成测试中结合 WebApplicationFactory 使用 SQLite 内存数据库
- ASP.NET Core轻松入门之Middleware管道模型
- IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity
- asp.net core轻松入门之MVC中Options读取配置文件
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- asp.net core轻松入门之MVC中Options读取配置文件
- 学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory
- ASP.NET Core 1.0 入门——Application Startup¶
- Asp.Net Core轻松入门之WebHost的配置
- ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- 使用 Visual Studio 的 ASP.NET Core MVC 和 Entity Framework Core 入门 (1 of 10)
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
- Asp.Net Core轻松入门之WebHost的配置
- ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options