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请求到响应的基本流程

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值