ASP运行流程(主要的类笔记)

摘要:
在此方法中,调用ApplicationManager对象的CreateObjectInternal方法以获取ISAPIRuntime实例对象,并在此过程中创建AppDomainHostingEnvironment等对象。此时,已获得ISAPIRuntime对象。此时,将调用ISPAIRuntime的ProcessRequest方法。在此方法中,将调用HttpRuntime.ProcessRequestNoDemand。到目前为止,HttpRuntime的世界已经正式进入。在这个阶段,将创建重要的类对象,如HttpContex、HtpRequest、HttpResponse。还有一个重要的代码IHttpHandlerap=HttpApplicationFactory。ISAPIRuntime中的GetApplicationInstance;是的,它是为了获取HttpApplication对象。在此过程中,我们将创建Pipeline对象。这个过程主要做几个重要的事情:1。根据Web的设置。配置,加载相应的HttpModules。

个人笔记:参考汤姆大叔的MVC之前那些事系列整理  281209034001544  

client端发送页面请求,被IIS的某个进程截获,它根据申请的页面后缀(.aspx)不同,调用不同的页面处理程序(.asp->asp.dll; .aspx->ISAPI.dll).当asp应用程序进入CLR时,

框架会加载一个重要的类AppManagerAppDomainFactory。

在默认构造函数中,得到了ApplicationMananger对象。

而且这个类继承了IAppManagerAppDomainFactory,这个接口有个重要的方法Create。

在这个方法中调用ApplicationMananger对象的CreateObjectInternal方法,用于得到ISAPIRuntime实例对象

而且在这个过程中会创建AppDomain  HostingEnvironment(ISAPIRuntime是通过该对象创建的)等对象。

此时已经得到ISAPIRuntime对象了,此时开始调用ISPAIRuntime的ProcessRequest方法

在这个方法中,会调用开始调用HttpRuntime.ProcessRequestNoDemand(wr)  

至此正式进入了HttpRuntime的世界了着这个阶段会创建HttpContex,HtpRequest,HttpResponse等重要的类对象。

在ISAPIRuntime里面还有一句重要的代码

IHttpHandler app = HttpApplicationFactory.GetApplicationInstance(context);

没错,就是得到HttpAppplication对象。

通过HttpApplicationFactory的GetApplicationInstance静态方法

获取我们熟悉的HttpApplication对象实例。

至此,HttpRuntime已经正式发挥其无可替代的作用了,也正式通过此对象正式进入了HttpApplication对象的创建以及大家熟知的HttpApplication以后的生命周期了。

当然GetApplicationInstance静态方法并不是单单得到了一个HttpApplication对象这么简单。

在此过程中,会创建我们的Pipeline(管道)对象(包括读取配置文件、实例化管道对象)

这个过程主要做了重要的几件事情

1根据Web.Config的设置,加载相应的HttpModules。

2会加载IIS7集成模式下在服务器上设定的HttpModuels和Web.config里system.webserver下的

3根据发生的事件,调用HttpApplication实例中相应的事件处理函数

4创建很多实现IExecutionStep接口的类的实例并添加到当前HttpApplication实例的_execSteps中,等待回调时执行。从这里我们可以看到HttpApplication是以异步的方式处理请求, 对请求的很多处理工作都放入了_execStep等待回调时执行

免责声明:文章转载自《ASP运行流程(主要的类笔记)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇鬼谷子本经阴符七术(原文)DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Python内存泄漏

在《Python内存优化》一文中也提到,该函数能发现可以用slots进行内存优化的对象。...

jenkins 配置 git拉取代码

#@(!jfkldjMC4r/WaqVy/B+n/SBCY6dsjaNq6ZVhrdNkbh0XMm55fH9ifMyr5UDVHoeUbnwURrH+O7L0uWdhy2w4BHwIqZOF5Bcnd47N9d9hh67jW@!...

mysql修改字段防止锁表

步骤1:修改大表、addcolumn或dropcolumn的字段,操作完成后将锁定该表。此时,查询ok、insert和update将等待锁定。...

RedisTemplate

在SpringBoot@RequestMapping(“/del/{key}”)publicStringdel(@PathVariable(“key”)Stringkey){try{//当该键不存在时,异常redisTemplate.delete(key);return“Success”;}将不会引发catch(Exceptione){returne.get...

阿里巴巴开源性能监控神器Arthas初体验

今天跟大家介绍一款阿里巴巴开源的性能分析神器Arthas官方网站:https://alibaba.github.io/arthas/index.htmlArthas能为你做什么事情呢?接下来,我们找个项目实际体验一下Arthas。﹏﹏﹏﹏上述几个命令只是性能测工作中常用的一些操作,Arthas还有很多其他维度的监控数据,大家可以去官网看下用户手册学习更多操作...

登陆脚本

#!' num_ count+=1其他:lock_ input(用户名)#############1##########_###!...