博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ASP.NET Process Model 笔记 二】ASP.NET Http Runtime Pipeline
阅读量:7066 次
发布时间:2019-06-28

本文共 1474 字,大约阅读时间需要 4 分钟。

  •  HttpApplication本身并不提供对Request的处理功能,而是通过在不同阶段出发不同的Event。之所以HttpApplication会有一些处理是因为系统本身有些module和handler定制了HttpApplication的事件。
  •  就像其名称体现的一样,HttpApplication基本上可以看成是真个ASP.NET Application的体现。HttpApplication和置于虚拟根目录的Gloabal.asax对应。通过.创建一个基于Gloabal.asaxHttpApplication对象。在.方法返回创建的HttpApplication对象之前,会调用一个名为的内部方法,该方法会做一些列的初始化的操作,在这些初始化操作中,最典型的一个初始化方法为(),该方法的主要的目的就是查看Config中注册的所有HttpModule,并根据配置信息加载相应的Assembly,通过Reflection创建对应的HttpModule,并将这些Module加到HttpApplication _ Filed中。HttpApplicationFactory.GetApplicationInstance()反编译如下:

     internal static IHttpHandler GetApplicationInstance(HttpContext context)

    {
        
    if (_customApplication != 
    null)
        {
            
    return _customApplication;
        }
        
    if (context.Request.IsDebuggingRequest)
        {
            
    return 
    new HttpDebugHandler();
        }
        _theApplicationFactory.EnsureInited();
             _theApplicationFactory.EnsureAppStartCalled(context);
        
    return _theApplicationFactory.GetNormalApplicationInstance(context);
    }
  •  一个Application会有一个HttpApplication Pool,ASP.NETHttpApplication的使用采用Pool的机制:当Request到达,ASP.NET会现在HttpApplication Pool中查找未被使用的HttpApplication对象,如果没有,则创建之,否则从Pool直接提取。
  •  一般情况一下,一个Application对应一个App Domain,但有一种特殊的场景:在当前Application正在处理Request的时候,我们把web.config以及其他一些相关文件修改了,而且这种改变是可以马上被ASP.NET检测到的,为了使我们的变动能够及时生效,对于改动后的第一个RequestASP.NET会为期创建一个新的AppDomain,而对于原来的AppDomain,也许还在处理修改前的Request,所有原来的Appdomain会持续到将原来的Request处理结束之后,所以对于一个Application,可能出现多个AppDomain并存的现象。
     

 

参考资料:

Reference:


ASP.NET Process Model
 
 

  

 

精简概括: 

转载于:https://www.cnblogs.com/skywithcloud/archive/2012/01/04/2306318.html

你可能感兴趣的文章
减治算法求n个数中的最小数的位置
查看>>
css3学习 理论之文本
查看>>
Linux 安装python3.7.0
查看>>
<Linux命令行学习 第二节> CentOS - 远程登录管理工具
查看>>
[转]BEHAVOUR TREE2
查看>>
深入理解计算机操作系统(十)
查看>>
XML和Schema命名空间详解
查看>>
npm ERR! Unexpected end of JSON input while parsing near '...inimist":"^1.2.0"}
查看>>
Mybatis Generator逆向工程的使用
查看>>
设计模式(八)_门面模式
查看>>
BFS - 水题
查看>>
软件面试常见题目(转帖)
查看>>
JavaScript事件详解
查看>>
[LeetCode] NO. 387 First Unique Character in a String
查看>>
理解管理信息系统
查看>>
UVA 11991 - Easy Problem from Rujia Liu?
查看>>
CF1101E Polycarp's New Job
查看>>
[转载]我再也不想在任何头文件中看到“using namespace xxx;”了
查看>>
Nginx禁止ip访问或IP网段访问方法
查看>>
IDEA下从零开始搭建SpringBoot工程
查看>>