ASP.NET Core 程序启动过程如下

ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明-LMLPHP

 微软官方说明:

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

常见中间件顺序

  1. 异常/错误处理
  2. HTTP 严格传输安全协议
  3. HTTPS 重定向
  4. 静态文件服务器
  5. Cookie 策略实施
  6. 身份验证
  7. 会话
  8. MVC

你可以添加其它参数 对 Configure 方法 进行重写,如 IHostingEnvironment  、ILoggerFactory

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ... ... , ... ...)
        {
        ... ...
        }

中间件

Configure 方法 使用 IApplicationBuilder 来使用中间件

UseMapRun 三种使用方式

  • 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 范围很广,包括应用启动、依赖关系注入、路由、环境、配置、选项、日志记录、处理错误等。

12-10 18:08