ASP.NET Core 程序启动过程如下
微软官方说明:
Startup 类
ASP.NET Core 应用使用 Startup
类,按照约定命名为 Startup
。 Startup
类:
- 可选择性地包括 ConfigureServices 方法以配置应用的服务。
- 必须包括 Configure 方法以创建应用的请求处理管道。
当应用启动时,运行时调用 ConfigureServices
和 Configure 。
Startup 方法体如下
public class Startup { // 使用此方法向容器添加服务 public void ConfigureServices(IServiceCollection services) { ... } // 使用此方法配置HTTP请求管道 public void Configure(IApplicationBuilder app) { ... } }
这篇文章只说 Configure
Configure() 方法
Configure 是一个在
- 命名空间 Microsoft.AspNetCore.Hosting 定义的
- 抽象类 ↓↓↓
public abstract void Configure (Microsoft.AspNetCore.Builder.IApplicationBuilder app);
IApplicationBuilder
IApplicationBuilder 定义用于配置应用请求管道的类,ASP.NET Core 请求管道包含一系列请求委托,依次调用。
不清楚 Asp.Net Core 请求管道、中间件的读者,对这一部分的内容可以参考
https://www.cnblogs.com/stulzq/p/7760648.html
https://www.cnblogs.com/JNLightGade/p/5737485.html
常见中间件顺序
- 异常/错误处理
- HTTP 严格传输安全协议
- HTTPS 重定向
- 静态文件服务器
- Cookie 策略实施
- 身份验证
- 会话
- MVC
你可以添加其它参数 对 Configure 方法 进行重写,如 IHostingEnvironment 、ILoggerFactory
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ... ... , ... ...) { ... ... }
中间件
Configure 方法 使用 IApplicationBuilder 来使用中间件
有 Use 、Map、Run 三种使用方式
- Use 使用中间件配置请求管道
- Map 管道分支
- Run 管道短路
对这一部分的内容可以参考
https://www.cnblogs.com/stulzq/p/7760648.html
https://www.cnblogs.com/JNLightGade/p/5737485.html
Asp.Net Core 内置很多中间件,用户可以直接使用,将在文章后面介绍
使用中间件
默认创建 Asp.Net Core Mvc 程序时,会生成如下模板(Asp.Net Core 2.1)
在文章后面或详细列出所有中间件并加以说明
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); //是否开发环境 } else { app.UseExceptionHandler("/Home/Error"); //出现错误跳转到 /Error 页面 app.UseHsts(); //在文章后面的第39行可以看到解释 } app.UseHttpsRedirection(); //把 HTTP 重定向到 HTTPS app.UseStaticFiles(); //使用静态文件 app.UseCookiePolicy(); //与 Cookie 有关 app.UseMvc(routes => //使用 MVP 页面 { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
可以直接使用 app.Use_______ 形式,直接使用内置中间件
Configure 方法 的参数 IApplicationBuilder
Configure 方法配置请求管道使用了 IApplicationBuilder,下面将详细列出 IApplicationBuilder 默认的方法、参数、特性等。
Properties(性质)
Methods(方法)
Extension Methods(拓展方法)--微软提供的中间件
使用方法 app._______
以下将列出 所有中间件及其重载方法、说明
注意 IApplicationBuilder 范围很广,包括应用启动、依赖关系注入、路由、环境、配置、选项、日志记录、处理错误等。