当我们在浏览器输入域名访问服务器资源时,会向服务器发送Http请求,并经由IIS处理后,交由ASP.NET托管程序处理,进入ASP.NET管道。在IIS内部如何处理我们不需要深入去了解,在ASP.NET内部,会调用托管代码ISAPIRuntime的ProcessRequest方法,并最后调用HttpApplication。注意,每一次请求,HttpRuntime会从对象池中获取或者创建HttpApplication对象,并创建HttpContext(这个类大家都应该熟悉)。HttpApplication有19个事件:

事件名称

BeginRequest

AuthenticateRequest

PostAuthenticateRequest

AuthorizeRequest

PostAuthorizeRequest

ResolveRequestCache

PostResolveRequestCache

PostMapRequestHandler

AcquireRequestState

PostAcquireRequestState

PreRequestHandlerExecute

PostRequestHandlerExecute

ReleaseRequestState

PostReleaseRequestState

UpdateRequestCache

PostUpdateRequestCache

LogRequest

PostLogRequest

EndRequest

在HttpApplication处理http请求的过程中,会响应触发不同的事件。ASP.NET提供了IHttpModule和global.asax,我们通过IHttpModule和global.asax可以获取到HttpApplication对象。IHttpModule是一个很重要的接口,现在的MVC框架,就是通过这个接口扩展而来的。IHttpModule接口有个方法Init(HttpApplication httpApplication),方法中就带入了HttpApplication对象。在我们继承IHttpModule时,我们可以利用HttpApplication的生命周期在需要的阶段注册相应的事件实现自己需要的各种功能,框架在初始化HttpApplication的时候,会调用所有继承自IHttpModule的类的Init方法,并触发其事件。然后最终由IHttpHandler来正真处理请求和最终的响应(Response).通过IIS返回给用户客户端。

ASP.NET运作流程的更多相关文章

  1. 初探ASP.NET Core 3.x (3) - Web的运作流程和ASP.NET Core的运作结构

    本文地址:https://www.cnblogs.com/oberon-zjt0806/p/12215717.html 注意:本篇大量地使用了mermaid绘制图表,加载需要较长的时间,请见谅 [TO ...

  2. nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...

  3. 简述 OAuth 2.0 的运作流程

    本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...

  4. jQuery validate运作流程以及重复提示错误问题

    一,运作流程 jQuery validate要想运作,首先要加载相应的js <script type="text/javascript" src="/js/clas ...

  5. 开源的asp.net工作流程引擎。 http://ccflow.org

    开源的asp.net工作流程引擎. http://ccflow.org

  6. 简述 OAuth 2.0 的运作流程(转)

    原文地址:http://www.barretlee.com/blog/2016/01/10/oauth2-introduce/ 本文将以用户使用 github 登录网站留言为例,简述 OAuth 2. ...

  7. KBE_运作流程

    图片来自官方手册:Switch Fabric:交换机网络,根据网络环境的不同而不同,根据用户自己的情况进行配置,不属于引擎范畴. 运作流程 Client连接Loginapp通过API连接,如下示例: ...

  8. (一)springMvc 底层运作流程

    目录 什么是 springMvc SpringMVC的底层运作流程 什么是 springMvc springMvc 是spring 框架的一个模块,这也就意味着二者不需要通过整合层(整合包)进行整合 ...

  9. Chapter Zero 0.1.3 其他单元设备以及运作流程

    其他单元设备 五大单元中的控制单元.算数逻辑段元都被整合到CPU的封装中, 但其实系统单元中,不止有CPU(控制单元.算数逻辑单元), 计算机单元还有哪些? 系统单元:系统单元包括CPU.主存储器(内 ...

随机推荐

  1. 制作Mac安装盘U盘

    1. 下载对应版本的mac安装文件, 复制到mac上, 解压后应该是一个类似于 Install OS X [version name].app 的目录, 复制到/Applications 2. 将U盘 ...

  2. N-Queens

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  3. ELK日志系统:Filebeat使用及Kibana如何设置登录认证

    根据elastic上的说法: Filebeat is a lightweight, open source shipper for log file data. As the next-generat ...

  4. [LeetCode] Combination Sum III 组合之和之三

    Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...

  5. [LeetCode] Candy 分糖果问题

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...

  6. 网站收集ing....

    1.账号注册网址 http://bugmenot.com/ PS:只要输入相关网站域名就能立即完成网站注册 2.博客网站 CSDN,博客园,开源中国 3.破解网站 吾爱破解 4.矢量图标 http:/ ...

  7. 常用jQuery 方法

    //强制给数字补全小数点 function toDecimal2(x) { var f = parseFloat(x); if(isNaN(f)) { return false; } var f = ...

  8. HTML 字符实体 &lt; &gt: &amp;等

    在 HTML 中,某些字符是预留的. 在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签. 如果希望正确地显示预留字符,我们必须在 HTML 源代码中使用 ...

  9. CSS实现文字省略

    1.首先给用于放文本的标签元素设置一个宽度值,并设置溢出属性overflow为溢出隐藏. width: 245px;/*一定要设置固定宽度*/ overflow: hidden;/*不显示超过对象尺寸 ...

  10. Git,non-fast-forward

    当把coding好的code,push到Git时会出现这个错误:master[rejected  non-fast-forward] 问题(Non-fast-forward)的出现原因在于:git仓库 ...