Asp.net底层机制

摘要:
HttpApplication是Web程序处理的地方。它被映射到Global.asax类。此类继承HttpApplication。全局中的每个事件都由Application_为前缀事件实现,这避免了手动创建这些事件委托。每个asp.net虚拟目录都在其自己的应用程序域中执行。每个应用程序域可以有来自管理池的多个HttpApplication对象,这就是为什么可以同时执行多个请求而不会相互影响的原因。

Asp.net底层就是用户通过输入网址,然后请求IIs服务器的流程,在这个过程中有一个重要的部件就是ISAPI,这是一个底层的win32API,在扩展方面比较困难,多用于接口之间的桥接,.net和IIS通过IISAPI进行交互的,IIS中后缀名.aspx,通过应用程序扩展映射到.net的ISAPI扩展的dll,这个dll就是aspnet_isapi.dll,访问都是通过这个dll中相应的映射完成的。

1.通过asp.net的映射机制使用后缀名从ISAPI中获取到接收的请求,并将请求的路由到相应的handler,aspnet_isapi.dll会开启一个工作进程w3wp.exe(使用程序池进行创建,右侧使用无则创建)

2.ISAPIRuntime.ProcessRequest(ecb),将句柄封装为HttpWorkingRequest

3.HttpRuntime.ProcessRequest(wr)这个操作的作用:1.创建一个HttpContext实例,里面封装了浏览器报文的信息2.创建一个HttpApplication实例,首先查看是否有空余的application,没有则按照global.asax类型创建,这个是用来处理报文数据.3.调用Init()方法,初始化管道事件,同时触发管道执行事件。

HttpContext这个对象在整个请求的生命周期中都是存在的,封装了报文的信息,同时包含了所有的请求过程中的重要对象,包括Ruquest、Responese、Application、Cache、Server ,HttpContext.Current可以去访问这些对象,HttpContext,Items这个集合中可以保存一些数据信息,这些数据的生命周期就是整个的请求过程,BeginRequest-EndRequest,HttpContext是在开始请求的时候被创建,是进程内唯一对象。

HttpApplication是Web程序处理的地方,他被映射到Global.asax类中,这个类继承了HttpApplication,在Global中的每一个事件都是以Application_为前缀的事件实现,这也就避免了自己手动创建这些事件委托。每个asp.net的虚拟目录都是在自己的应用程序域中执行,每个应用程序域可以有多个来自管理池的HttpApplication对象,这就是可以同时执行多个请求而互相不影响的原因。

Web.Config具有全局通知的作用,会重新创建应用程序域,关闭旧的应用程序域名。HttpApplication.Init()->HttpApplication.ResumeSteps,执行所有的处理器,这些处理器被映射到global.asax

免责声明:文章转载自《Asp.net底层机制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Lucene.net的简单使用CBV和APIView流程下篇

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

相关文章

网站后台登录地址大全 (转)

/admin/index.asp /admin/login.asp /admin/admin_login.asp /manage/index.asp /manage/login.asp /manage/admin_login.asp /admin/index.aspx/admin/login.aspx/admin/admin_login.aspx/manag...

ASP.NET内置对象Session缺点及解决办法---by winter

Session 是我们经常用到的对象,今天我才发现原来它不是那么简单,他也有很多优缺点和局限性。如果我吗想将我们的网站做到极致,就必须了解它的优缺点。希望在此之后我能够去学习session以外的其他asp.net内置对象。这是一个任务。过年前必须完成!!! 以下是我需要深入了解的: 什么是内置对象?就是asp.net已经为你定义好了的,不用自己定义,直接调用...

ActiveX控件部署经历

今天做activex控件与页面交互,一开始出现IIS不能运行ASP页面的问题,想到是2003,于是去IIS打开了web服务中的Active Server Pages 服务,恢复了Asp的使用,在FP中调试控件时又发生与语法错误.然后放弃在FP中写代码,改用记事本,如此写出来的代码就可以正常运行了....

体验ASP.NET MVC3 表单令牌功能!

开始以为ASP.NET没有令牌功能, 打算把php里的移植过来的, 都快写完了才发现原来ASP.NET里有… 好吧, 不说废话了, 进入主题!!!! 在form标签内加入: @Html.AntiForgeryToken() 在form action 的方法加上 [ValidateAntiForgeryToken] 没有令牌的表单提交会报错, 这...

浅谈分页技术

转自:http://www.cnblogs.com/dlwang2002/archive/2005/10/14/254971.html 这几天看到几篇关于分页的文章,觉得有些东西可以分享一下。这里提供一些关于UI分页和数据库分页的一些解决方案。还有一些常用控件的使用方法概要 通常一个查询语句如果得到的数据量过大或者为了UI美观考虑,就需要进行对这些数据进行分...

在ASP.Net 2.0中实现多语言界面的方法

轉自:http://dev.yesky.com/msdn/182/2412682.shtml1.跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做 2. 做完以后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource3. 你会发现生成了一个目录,App_LocalResou...