IIS请求处理流程
IIS请求处理流程
一、IIS管道模型
1.1 IIS 6.0
1.2 IIS 7.0
二、管道事件
三、ASP.NET MVC请求到响应的基本流程
一、IIS管道模型
1.1 IIS 6.0
在IIS 6.0和早期版本中,ASP.NET被实现为IIS的ISAPI扩展。
对于ASP.NET内容类型的请求,会被转发到承载ASP.NET请求管道和页面框架的ASP.NET的 isapi.dll
对非ASP.NET内容(例如ASP页或静态文件)的请求则由IIS或其他ISAPI扩展进行处理,并且对ASP.NET不可见
1.2 IIS 7.0
IIS 7.0 将ASP.NET管道与自身管道集成在一起,通过模块化的方式进行组合和拓展
二、管道事件
在集成模式下,暴露给模块的ASP.NET请求处理阶段直接连接到IIS管道的相应阶段。完整的管道包含以下阶段,这些阶段在ASP.NET中作为HttpApplication事件公开:
事件 描述
1.BeginRequest 请求处理开始
2.AuthenticateRequest 该请求已通过身份验证。IIS和ASP.NET身份验证模块订阅此阶段以执行身份验证
3.PostAuthenticateRequest
4.AuthorizeRequest 该请求被授权。IIS和ASP.NET授权模块检查经过身份验证的用户是否有权访问所请求的资源
5.PostAuthorizeRequest
6.ResolveRequestCache 高速缓存模块检查对此请求的响应是否存在于高速缓存中,然后将其返回,而不是继续执行其余的执行路径。ASP.NET输出缓存和IIS输出缓存功能均执行
7.PostResolveRequestCache
8.MapRequestHandler 此阶段在ASP.NET中是内部的,用于确定请求处理程序
9.PostMapRequestHandler
10.AcquireRequestState 检索执行请求所需的状态。ASP.NET会话状态和配置文件模块获取其数据
11.PostAcquireRequestState
12.PreExecuteRequestHandler 执行处理程序之前的所有任务
13.ExecuteRequestHandler 请求处理程序执行。提供ASPX页,ASP页,CGI程序和静态文件
14.PostExecuteRequestHandler
15.ReleaseRequestState 请求状态更改已保存,并在此处清除状态。ASP.NET会话状态和配置文件模块使用此阶段进行清理
16.PostReleaseRequestState
17.UpdateRequestCache 响应存储在缓存中以备将来使用。执行ASP.NET输出缓存和IIS输出缓存模块以将响应保存到其缓存中
18.PostUpdateRequestCache
19.LogRequest 此阶段记录请求的结果,并确保即使发生错误也可以执行
20.PostLogRequest
21.EndRequest 此阶段执行所有最终请求清除,并确保即使发生错误也可以执行
三、ASP.NET MVC请求到响应的基本流程
————————————————
原文链接:https://blog.csdn.net/qq_37112587/article/details/112340916