asp.net请求处理过程

当我们请求一个页面时,IIS服务器会判断我们请求的是不是静态页面,如html,css,js,图片等,如果是则直接返回;

如果我们请求的是一个aspx页面则会把请求交给aspnet_api.dll,然后再交给.netframework;

.netframework会调用httpruntime对象的processRequest方法

1创建httpworkRequest——封装了原始的请求报文;

2创建HttpContext——将httpworkRequest中的报文交给了httpContext,创建了HttpRequest,HttpResponse;

3:通过HttpApplicationFactory创建了HttpAppliacation——由该类完成对请求的具体处理,所以我们将HttpContext作为参数传递到HttpApplication中;


然后开始HttpApplication的ProcessRequest请求管道的十九个事件,具体事件大家可以查 一下表,这十九个事件中完成对请求的具体处理;


在beginrequest事件时,我们常做的一件事便是url的重写,实现seo的优化;


在请求管道的第8个时间创建页面类对象,转成了IHttpHandler借口;


在11,12时间之间执行了页面类的ProcessRequest方法在这里会调用父类的ProcessRequest方法;然后执行BuildControlTree()创建控件树,然后调用ProcessRequest Main()开始页面的生命周期;在生命周期中相应的事件完成了页面中相应的工作,甚至可以设置空间元素的属性值;特别注意pageload的执行顺序;页面的pageload先与母版页,母版页先于自定义控件;然后再执行我们服务端控件事件的代码;


最后调用render方法,遍历控件树中每个控件元素的RenderControl方法,来获取相应的HTML元素,每个控件的rendercontrol方法都有一个TextWriter参数,将所有的空间的HTML代码都封装到同一个TextWriter中,TextWriter存放都是HTML代码。因此,在此可以根据自已的意愿改变生成的HTML代码,可以通过添加浏览器文件,修改配置来实现;


当请求管道处理完成,就将HTML代码返回给浏览器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值