• Httphandler,HttpModule学习笔记


    1.Asp.Net页面请求流程(IIS5.X)

    gif_1

    inetinfo.exe:监听Request并把Request分发到Work Process。
    Http PipeLine:将Http请求发送给ASPNET_WP.EXE进程的管道。采用这个管道来通信是由于IIS在IntelInfo进程,和ASPNET_WP.EXE进程间的通信是同一台机器不用进程的通信。(ASPNET_WP.EXE进程是由ISAPI创建的。)
    ASPNET_WP.EXE(Work Process):一台机器只有一个该进程,每一个基于虚拟目录的ASP.NET Application(网站)对应一个Application Domain,也就是说所有的Application都是运行在同一个Work Process上的。Application之间的隔离是通过Domain而不是通过Work Process进程。

    gif_1

    HttpContext:体现当前Request的上下文信息,它的生命周期知道整个Request处理结束或者处理超时。通过HttpContext对象我们可以访问属于当前Request的一系列常用的对象:Server,Session,Cache,Application,Request,Response,Trace,User,Profile等等。此外我们可以认为将一些数据放在Items属性中作为状态管理的一种方式,不过这种状态管理和其他一些常用的方式,比如Session,Cache,Application,Cookie等,具有根本性的不同之处是其生命周期仅仅维持在当前Request的Context中。
    HttpApplication:ASP.NET Application的体现,和global.asax对应,通过HttpApplicationFactory.GetApplicationInstance创建一个基于Gloabal.asax的HttpApplication对象。在创建这个对象之前,会调用InitInternal方法,该方法中有一个InitModules(),会创建config文件中注册的Modules,并且把这些Modules加载到HttpApplication的_moduleCollection Filed中。

    2.HttpModule

    HttpApplication本身并不提供对Request的处理功能,通过HttpModule封装一些功能模块,并将其注册到HttpApplication中来实现这些功能。

    3.HttpHandler

    定义了各种Type的请求的处理程序,比如下面这一段:
    <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
    PageHandlerFactory是aspx文件的默认处理程序
    <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler" />
    HttpForbiddenHandler是config文件的默认处理程序,HttpForbiddenHandler实现了当尝试访问映射到此处理程序的资源时,它会发出 HTTP 403 错误“禁止”。

    参考:http://www.cnblogs.com/artech/archive/2007/09/13/891266.html

  • 相关阅读:
    ajax_注册
    mysql 二
    mysql基础
    django数据库批量创建
    私有属性
    mysql操作
    @property @classmethod @staticmethod
    python中的__new__方法
    员工信息表-装逼版
    三级菜单
  • 原文地址:https://www.cnblogs.com/celery94/p/1365295.html
Copyright © 2020-2023  润新知