尊重作者劳动成果,转载请注明出处,谢谢!
目录
1.请求管道
1.1 请求上下文
1.2 服务器
1.3 中间件
2.注册中间件
2.1 注册委托类型中间件
2.2 注册强类型中间件
2.3 注册约定名称中间件
2.4 其它扩展方法
3.实现解析
扫描二维码关注公众号,回复:
11352047 查看本文章
3.1 设计模型
3.2 ApplicationBuilder
3.3 HostingApplication
3.4 DefaultHttpContextFactory
1.请求管道
在 Web 主机一节中,我们简单介绍到了 ASP.NET Core 对 HTTP 请求的处理是由一个请求处理管道来完成的,位于管道最前面的是一个 Web 服务器,用于监听、接收并响应 HTTP 请求,而 Web 服务器后面是一组中间件,用于对接收到的请求进行处理。
1.1 请求上下文
HttpContext 表示请求上下文,定义如下:
public abstract class HttpContext { public abstract IFeatureCollection Features { get; } public abstract HttpRequest Request { get; } public abstract HttpResponse Response { get; } public abstract ConnectionInfo Connection { get; } public abstract WebSocketManager WebSockets { get; } public abstract ClaimsPrincipal User { get; set; } public abstract IDictionary<object, object> Items { get; set; } public abstract IServiceProvider RequestServices { get; set; } public abstract CancellationToken RequestAborted { get; set; } public abstract string TraceIdentifier { get; set; } public abstract ISession Session { get; set; } public abstract void Abort(); }
1.2 服务器
1.3 中间件
2.注册中间件
Startup 启动类除了用于注册依赖服务外,其主要目的是用来注册中间件的(前者是可选的,后者是必须的)。对于中间件的注册,是通过 IApplicationBuilder 接口来完成的,IApplicationBuilder 接口的定义如下:
public interface IApplicationBuilder { IServiceProvider ApplicationServices { get; set; } IFeatureCollection ServerFeatures { get; } IDictionary<string, object> Properties { get; } IApplicationBuilder Use(Func<RequestDelegate, RequestDelegate> middleware); IApplicationBuilder New(); RequestDelegate Build(); }