1、请求到达IIS服务器,IIS根据文件后缀找到对应的ISAPI(Internet Server API)扩展来处理,这个配置可在网站属性里的“根目录”选项卡中的“配置”里看到。可以看到,ashx、aspx配置的都是“aspnet_isapi.dll”,此ISAPI扩展我们便称之为ASP.NET。

2、ASP.NET加载CLR,在CLR初始化的时候会加载两个重要的dll:AppManagerAppDomainFactory和ISAPIRuntime。

3、AppManagerAppDomainFactory在构造方法中创建ApplicationManager对象,create方法调用ApplicationManager的对象方法创建了AppDomain的对象,并在此过程中创建了HostingEnvironment的对象(该对象提供应用程序的物理路径、虚拟路径等信息)。

4、ISAPIRuntime的ProcessRequest方法创建HttpWorkerRequest的对象,来保存请求信息(HttpContext的前身),进而调用HttpRuntime的静态方法ProcessRequestNoDemand而最终在其实例方法(HttpRuntime有一个字段private static HttpRuntime _theRuntime;来保证每个应用程序只有一个HttpRuntime实例) ProcessRequestInternal里创建了HttpContext和HttpApplication对象。在向HttpApplicationFactory申请对象时,若对象不是现成的,才会间接调用HttpApplication的InitialModules方法创建已经配置的module,最后开始走HttpApplication的19个事件,(即管线/Http Pipeline)加工HttpContext。

19个事件中,在PreRequestsHandlerExecute和PostRequestsHandlerExecute两个事件之间,调用了HttpHandler的ProcessRequest方法。自定义的HttpModule可以在HttpApplication对象的任意一个事件上注册方法,HttpApplication则会在顺序触发这19个事件时依次调用在每个事件上注册的方法。通常处理请求时,会在PostAcquireRequestState、PreRequestsHandlerExecute这两个事件上注册,前者是Session已经获得(前提是HttpHandler实现了IRequiresSessionState接口,Page类是通过EnableSessionState="false"来动态觉定是否实现此接口),后者是将要执行HttpHandler的ProcessRequest方法。

系统已经注册的HttpModule、HttpHandler可以参见C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config文件,我们可以看到.config、.cs等文件之所以不能直接访问,是因为都被注册了一个HttpForbiddenHandler。在网站根目录中的web.config注册的HttpHandler优先级要高于系统已经注册的,所以如果如果注册一个HttpHandler,并将path设为“Account/*.aspx”,那么所有访问Account文件夹下的aspx请求都会转到注册的HttpHandler上。

参考:

IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述

用三张图片详解Asp.Net 全生命周期

ASP.NET Process Model之二

ASP.NET内幕 - ISAPI和应用程序域之间的桥梁

ASP.NET 应用程序生命周期的更多相关文章

  1. [转]ASP.NET应用程序生命周期趣谈(五) IIS7瞎说

    Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希 ...

  2. [转]ASP.NET应用程序生命周期趣谈(三) HttpModule

    在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpM ...

  3. [转]ASP.NET应用程序生命周期趣谈(一)

    这几天一直在看ASP.NET应用程序生命周期,真是太难了,我理解起来费了劲了,但偏偏它又是那么重要,所以我希望能给大家带来一篇容易理解又好用的文章来帮助学习ASP.NET应用程序生命周期.这篇就是了. ...

  4. asp.net应用程序生命周期和asp.net网页的生命周期

    一.asp.net应用程序生命周期 asp.net应用程序生命周期以浏览器向web服务器(比如IIS服务器)发送请求为起点,先后经历web服务器下的ISAPI(Internet Server Appl ...

  5. asp.net应用程序生命周期

    asp.net应用程序生命周期(流程文字描述版) 请求——>IIS——>ISAPI映射——>交给asp.net(即为IIS的扩展)——>通知Application类创建一个应用 ...

  6. ASP.NET 应用程序生命周期概述[转自MSDN]

    本文转自:http://msdn.microsoft.com/zh-cn/library/ms178473(VS.80).aspx 下表描述了 ASP.NET 应用程序生命周期的各个阶段.   阶段 ...

  7. IIS 7.0 的 ASP.NET 应用程序生命周期概述(转载)

    IIS 7.0 的 ASP.NET 应用程序生命周期概述更新:2007 年 11 月本主题介绍在 IIS 7.0 集成模式下运行以及与 IIS 7.0 或更高版本一起运行的 ASP.NET 应用程序的 ...

  8. ASP.NET页面生命周期和asp.net应用程序生命周期

    作为一个asp.net程序员,不了解ASP.NET页面生命周期和asp.net应用程序生命周期是绝对不行的,那永远只能是菜鸟级别.我很早就学过,可是没次还是得去翻,一些事件还是记不住,还是记在自己的b ...

  9. 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件

    IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...

随机推荐

  1. 运用mapreduce计算tf-idf

    问题描写叙述:给定一个大文件,文件里的内容每一行为:文档名,文档内容. input 文档名1,word1 Word2 ....... 文档名2,word1 Word2 ....... output w ...

  2. POJ 1166 The Clocks

    高斯消元法第四个冠军,这个称号是非常令人兴奋~~ 题目大意: 给出9个钟表的状态.给出九种操作,问最少要操作几次能把全部的钟表调回12点. 解题思路: 对于9个钟表分别列方程,然后高斯消元就可以.因为 ...

  3. Chrome App远程控制

    現在google app連上chrome就能遠控了出了幾年了, 能用觸控控制mouse https://chrome.google.com/webstore/detail/chrome-remote- ...

  4. [Cocos2d-x]Cocos2d-x开发中C++调用Object-c

    2013年12月29日 简介: Cocos2d-x开发过程中,难免需要通过C++调用Object-C

  5. Android开发者必须深入学习的10个应用开源项目

    Android 开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项 目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的 ...

  6. 敏捷开发用户故事系列之十一:CSDN博客用户故事分析

    这是敏捷开发用户故事系列的第十一篇.(栏目目录) 经常有人问起有没有完整的用户故事案例.本人在网上找了一下,大约能找到两三篇,但多数只是为了描述用户故事的语法而已,都不涉及用户故事的颗粒度.大量故事的 ...

  7. 解决windows下的mysql匿名登陆无法使用mysql数据库的问题

    原文:解决windows下的mysql匿名登陆无法使用mysql数据库的问题 我在windows下安装了mysql,但是不用密码就能登进去,而root明明是有密码的,我用select user()命令 ...

  8. nyoj 130 同样的雪花 【哈希】

    同样的雪花 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 You may have heard that no two snowflakes are alike. ...

  9. 2014年百度之星程序设计大赛 - 资格赛 第三题 Xor Sum

    小记:艹蛋呢, 取long long的低30,32,34位都WA, 取31位才AC. .. 思路:依据求数组中两个数异或最大值.參考 代码: #include <stdio.h> #inc ...

  10. ASPF简介

    ASPF是一种应用层状态检测技术,它通过与NAT和ALG等技术的组合应用,实现对应用层协议状态的处理和检测. 1.1  产生背景 随着计算机技术和网络技术的普及,网络安全问题也越来越得到关注.防火墙作 ...