珍惜每一天

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

(以下是我对文野(http://stwyhm.cnblogs.com)兄的文章的学习整理) 

asp.net 生命周期:

一个完整的HTTP请求在ASP.NET Framework的处理过程如下:

HttpRequest ——> inetinfo.exe(IIS) ——> ASPNET_ISAPI.dll ——> Http Pipeline ——> ASPNET_WP.exe ——> HttpRuntime ——> HttpApplication Factory  ——> HttpApplication  ——> HttpModule ——> HttpHandler Factory  ——> HttpHandler  ——> HttpHandler.ProcessRequest()

HttpModule是如何工作的

当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。

 无论是通过Url发出请求,还是一个按钮引起的页面回发,对IIS来说是一样的,都是一次请求。而HttpModule中的事件一般都在页面事件前,特别是控件事件,所以如果在HttpModule的事件中对请求进行过滤处理后就不会执行到页面事件或控件事件,这就是上面示例的UserAuthorizationModule代码中为什么要对请求页面是否是Login.aspx进行判断的原因了。

可以在HttpModule中作验证用户登录或者验证用户的权限、或者二级域名权限处理,都是很好的处理地方

 

posted on 2007-12-11 22:06  了无痕  阅读(274)  评论(0编辑  收藏  举报