ASP.NET (HttpModule,HttpHandler)

asp.net 事件模型机制
-----------------------

客户的请求页面由aspnet_isapi.dll这个动态连接库来处理,把请求的aspx文件发送给CLR进行编译执行,然后把Html流返回给浏览器
-----------------asp.net
事件模型机制
-----------------------

客户的请求页面由aspnet_isapi.dll这个动态连接库来处理,把请求的aspx文件发送给CLR进行编译执行,然后把Html流返回给浏览器
--------------------------
二 页面事件
执行顺序
Page_Init:初始化值或连接
Page_Load:主要使用IsPostBack,该事件主要执行一系列得操作来首次创建asp.net页面或响应
由投递引起得客户端事件。在此事件之前,已还原页面和控件视图状态。
Page_DataBind:在页面级别上调用,也可在单个控件中调用。
DataBind_PreRender:数据绑定预呈现,恰好在保存视图状态和呈现控件之前激发此事件。
Page_Unload:此事件是执行最终清理工作的。
非确定事件
Page_Error:如果在页面处理过程中出现未处理的例外,则激发error事件。
Page_AbortTransaction:交易事件,事务处理中如果已终止交易,则激发此事件,购物车常用。
Page_CommitTransaction:如果已成功交易,则激发此事件。
--------------------------------------------------------
Global.asax中的事件(执行顺序)
Application_Start:应用程序启动时激发
Application_BeginRquest:http请求开始时激发
Application_AuthenticateRequest: 应用程序批准http请求时激发
Session_Start: 会话启动时激发
Application_EndRequest:Htttp请求结束时激发
Session_End:会话结束时激发
Application_End:应用程序结束时激发
Application_Error: 发生错误时激发
----------------------
ISAPI: 向web服务器插入某些组建,扩展功能,增强web服务器功能。
ISAPI: 扩展,win32的动态链接库,譬如aspnet_isapi.dll,可以把ISAPI扩展看作是一个普通的应用程序,它处理的目标是HTTP请求。
ISAPI: 过滤器,web服务器把请求传递给相关的过滤器,接下来过滤器可能修改请求,执行某些操作等等。
ASP.NET请求的处理过程:

于管道模型,在模型中ASP.NET把http请求传递给管道中所有的模块。每个模块都接收HTTP请求,并有完全的控制权。一旦请求经过了所有的
HTTP模块,最终被HTTP处理程序处理。HTTP处理程序对请求进行一些处理,并且结果将再次经过模块管道中的HTTP模块。
-----------
httpmodule 
ISAPI
过滤器(筛选器):IIS本身是不支持动态页面的,也就是说他仅仅支持静态HTML页面的内容,对于.asp .aspx .cgi
.php等,IIS并不知道如果处理这些后缀标记,它就会把它当作文本,丝毫不做处理发送到客户端。为了解决这个问题,IIS有一种机制,叫做ISAPI
的过滤器。它是一个COM组件。
ASP.NET服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如*.ascx *.aspx等)。扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中,asp.net中是
aspnet_isapi.dll。让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的HTML中,最后把完整的HTML返回给IIS,IIS再把内容发送到客户端。
----------------<br
/>HttpModule
Http
模块实现了过滤器(ISAPI
filter)的功能,它是实现了System.Web.IHttpModule接口的.net组件。。这些组件通过在某些事件中注册自身,把自己插入到
ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。有时候需要过虑一下
http请求,注意它不是覆盖其他的包括系统自带的HttpModule,在Machine.config中配置完成。
--------------------------------------
HttpHandler

实现了ISAPI
Extention的功能,它处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的通过必须实现
IHttpHandler接口。HTTP处理程序是实现System.Web.IHttpHandler接口的.NET组件。任何实现了该接口的类都可以
用于处理输入的Http请求。它就是Http处理程序。

以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为inetinfo.exe进程所截获,这个进程实际上就是
www服务。截获之后它会将这个请求转交给asp.dll进程,这个进程就会解释这个asp页面,然后将解释后的数据流返回给客户端浏览器。其实
ASP.DLL是一个依附在IIS的ISAPI文件,它负责了对诸如ASP文件,ASA等文件的解释执行,
-------------------------------------

ASP.NET的HTTP请求处理方法

客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断
文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http
PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之后,
asp.net framework就会通过HttpRuntime来处理这个Http请求,处理完毕后将结果返回给客户端。
------------------------------------

一个http请求被送入到HttpRuntime之后,这个Http请求会继续被送入到一个被称之为HttpApplication
Factory的一个容器当中,而这个容器会给出一个HttpApplication实例来处理传递进来的http请求,而后这个Http请求会依次进入
到如下几个容器中:
HttpModule --> HttpHandler Factory --> HttpHandler
当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个Http Request就被处理完成了,客户端也就得到相应的东东了。
完整的http请求在asp.net framework中的处理流程:
HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication
Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
如果想在中途截获一个httpRequest并做些自己的处理,就应该在HttpRuntime运行时内部来做到这一点,确切的说时在HttpModule这个容器中做到这个的。
----------------------------------------
-------------------------------------
系统本身的HttpModule实现一个IHttpModule的接口,当然我们自己的类也能够实现IHttpModule接口,这就可以替代系统的HttpModule对象了。
ASP.NET系统中默认的HttpModule:
DefaultAuthenticationModule 确保上下文中存在 Authentication 对象。无法继承此类。 
FileAuthorizationModule 验证远程用户是否具有访问所请求文件的 NT 权限。无法继承此类。 
FormsAuthenticationModule 启用 ASP.NET 应用程序以使用 Forms 身份验证。无法继承此类。 
PassportAuthenticationModule 提供环绕 PassportAuthentication 服务的包装。无法继承此类。 
SessionStateModule    为应用程序提供会话状态服务。 
UrlAuthorizationModule    提供基于 URL 的授权服务以允许或拒绝对指定资源的访问。无法继承此类。 
WindowsAuthenticationModule 启用 ASP.NET 应用程序以使用 Windows/IIS 身份验证。无法继承此类
--------------------------------------

些系统默认的HttpModule是在文件machine.config中配置的,和我们开发时使用到的web.config的关系是:是在
ASP.NET FRAMEWORK启动处理一个Http
Request的时候,它会依次加载machine.config和请求页面所在目录的web.config文件,如果在machine中配置了一个自己
的HttpModule,你仍然可以在所在页面的web.config文件中remove掉这个映射关系。
public class HelloWorldModule : IHttpModule
{
    public HelloWorldModule()
    {
    }
    public String ModuleName
    {
        get { return "HelloWorldModule"; }
    }
    // In the Init function, register for HttpApplication 
    // events by adding your handlers.
    public void Init(HttpApplication application)
    {
        application.BeginRequest += 
            (new EventHandler(this.Application_BeginRequest));
        application.EndRequest += 
            (new EventHandler(this.Application_EndRequest));
    }
    private void Application_BeginRequest(Object source, 
         EventArgs e)
    {
    // Create HttpApplication and HttpContext objects to access
    // request and response properties.
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.Write("<h1><font
color=red> HelloWorldModule: Beginning of
Request</font></h1><hr>");
    }
    private void Application_EndRequest(Object source, EventArgs e)
    {
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.Write("<hr><h1><font
color=red>HelloWorldModule: End of
Request</font></h1>");
    }
    public void Dispose()
    {
    }
}
    <system.web>
   <httpModules>
    <add name="HelloWorldModule" type="HelloWorldModule"/>
   </httpModules>
    </system.web>
-----------------------------------------------------------------------------------
深入HttpModule

个Http请求在被ASP.NET
Framework捕获之后会依次交给HttpModule以及HttpHandler来处理。hm与hh之间不是完全独立的,实际上,http请求在
hm传递的过程中会在某个事件内将控制权转交给hh的,而真正的处理在HttpHandler中执行完成后,HttpHandler会再次将控制权交还给
HttpModule
上面的代码中的HttpModule的Init()中的参数是HttpApplication类型,它具有许多事件,包括BeginRequest,EndRequest,AuthentiacteRequest
等等。
-----------------------------------------------------------------
IHttpHandler

是asp.net
Framework提供的一个接口,定义了如果要实现一个Http请求的处理所需要必须实现的一些系统约定。也就是说,如果你想要自行处理某些类型的
HTTP请求信息流的话,你需要实现这些系统约定才能做到。譬如一个*.aspx文件,用来处理此类型的Http请求,ASP.NET
FRAMEWORK将会交给一个名为System.Web.UI.PageHandlerFactory的HttpHandler类来处理。
HH
和HM一样,系统会在最初始由ASP.NET
FRAMEWORK首先加载machine.config中的HttpHandler,而后会加载Web应用程序所在目录的web.config中的用户
自定义的HttpHandler类。但是系统与我们自定义的HH之间的关系是"覆盖"的,也就是说如果我们自定义了一个针对"*.aspx"的
HttpHandler类的话,那么系统会将对此http请求的处理权完全交给我们自己定义的这个HttpHandler类来处理,而我们自己的
HttpHandler类则需要自己完全解析这个Http请求,并作出处理。
IHttpHandler
接口中最重要的方法ProcessRequest,这个方法就是HttpHandler用来处理一个Http请求,当一个
Http请求经过由HttpModule容器传递到HttpHandler容器中的时候,framework会调用HttpHandler的
ProcessRequest方法来做对这个Http请求做真正的处理。
framework实际上并不是直接把相关页面的HTTP请求定位到一个内部默认的IHttpHandler容器之上的,而是定位到了其内部默认的IHttpHandler Factory上了。IHttpHandler
Factory的作用就是对很多系统已经实现了的IHttpHandler容器进行调度和管理的,这样做的优点是大大增强了系统的负荷性,提升了效率。--------
二 页面事件
执行顺序
Page_Init:初始化值或连接
Page_Load:主要使用IsPostBack,该事件主要执行一系列得操作来首次创建asp.net页面或响应
由投递引起得客户端事件。在此事件之前,已还原页面和控件视图状态。
Page_DataBind:在页面级别上调用,也可在单个控件中调用。
DataBind_PreRender:数据绑定预呈现,恰好在保存视图状态和呈现控件之前激发此事件。
Page_Unload:此事件是执行最终清理工作的。
非确定事件
Page_Error:如果在页面处理过程中出现未处理的例外,则激发error事件。
Page_AbortTransaction:交易事件,事务处理中如果已终止交易,则激发此事件,购物车常用。
Page_CommitTransaction:如果已成功交易,则激发此事件。
--------------------------------------------------------
Global.asax中的事件(执行顺序)
Application_Start:应用程序启动时激发
Application_BeginRquest:http请求开始时激发
Application_AuthenticateRequest: 应用程序批准http请求时激发
Session_Start: 会话启动时激发
Application_EndRequest:Htttp请求结束时激发
Session_End:会话结束时激发
Application_End:应用程序结束时激发
Application_Error: 发生错误时激发
----------------------
ISAPI: 向web服务器插入某些组建,扩展功能,增强web服务器功能。
ISAPI: 扩展,win32的动态链接库,譬如aspnet_isapi.dll,可以把ISAPI扩展看作是一个普通的应用程序,它处理的目标是HTTP请求。
ISAPI: 过滤器,web服务器把请求传递给相关的过滤器,接下来过滤器可能修改请求,执行某些操作等等。
ASP.NET请求的处理过程:

于管道模型,在模型中ASP.NET把http请求传递给管道中所有的模块。每个模块都接收HTTP请求,并有完全的控制权。一旦请求经过了所有的
HTTP模块,最终被HTTP处理程序处理。HTTP处理程序对请求进行一些处理,并且结果将再次经过模块管道中的HTTP模块。
-----------
httpmodule 
ISAPI
过滤器(筛选器):IIS本身是不支持动态页面的,也就是说他仅仅支持静态HTML页面的内容,对于.asp .aspx .cgi
.php等,IIS并不知道如果处理这些后缀标记,它就会把它当作文本,丝毫不做处理发送到客户端。为了解决这个问题,IIS有一种机制,叫做ISAPI
的过滤器。它是一个COM组件。
ASP.NET服务在注册到IIS的时候,会把每个扩展可以处理的文件扩展名注册到IIS里面(如*.ascx *.aspx等)。扩展启动后,就根据定义好的方式来处理IIS所不能处理的文件,然后把控制权跳转到专门处理代码的进程中,asp.net中是
aspnet_isapi.dll。让这个进程开始处理代码,生成标准的HTML代码,生成后把这些代码加入到原有的HTML中,最后把完整的HTML返回给IIS,IIS再把内容发送到客户端。
----------------<br
/>HttpModule
Http
模块实现了过滤器(ISAPI
filter)的功能,它是实现了System.Web.IHttpModule接口的.net组件。。这些组件通过在某些事件中注册自身,把自己插入到
ASP.NET请求处理管道。当这些事件发生的时候,ASP.NET调用对请求有兴趣的HTTP模块,这样该模块就能处理请求了。有时候需要过虑一下
http请求,注意它不是覆盖其他的包括系统自带的HttpModule,在Machine.config中配置完成。
--------------------------------------
HttpHandler

实现了ISAPI
Extention的功能,它处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的通过必须实现
IHttpHandler接口。HTTP处理程序是实现System.Web.IHttpHandler接口的.NET组件。任何实现了该接口的类都可以
用于处理输入的Http请求。它就是Http处理程序。

以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为inetinfo.exe进程所截获,这个进程实际上就是
www服务。截获之后它会将这个请求转交给asp.dll进程,这个进程就会解释这个asp页面,然后将解释后的数据流返回给客户端浏览器。其实
ASP.DLL是一个依附在IIS的ISAPI文件,它负责了对诸如ASP文件,ASA等文件的解释执行,
-------------------------------------

ASP.NET的HTTP请求处理方法

客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断
文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http
PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之后,
asp.net framework就会通过HttpRuntime来处理这个Http请求,处理完毕后将结果返回给客户端。
------------------------------------

一个http请求被送入到HttpRuntime之后,这个Http请求会继续被送入到一个被称之为HttpApplication
Factory的一个容器当中,而这个容器会给出一个HttpApplication实例来处理传递进来的http请求,而后这个Http请求会依次进入
到如下几个容器中:
HttpModule --> HttpHandler Factory --> HttpHandler
当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个Http Request就被处理完成了,客户端也就得到相应的东东了。
完整的http请求在asp.net framework中的处理流程:
HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication
Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
如果想在中途截获一个httpRequest并做些自己的处理,就应该在HttpRuntime运行时内部来做到这一点,确切的说时在HttpModule这个容器中做到这个的。
----------------------------------------
-------------------------------------
系统本身的HttpModule实现一个IHttpModule的接口,当然我们自己的类也能够实现IHttpModule接口,这就可以替代系统的HttpModule对象了。
ASP.NET系统中默认的HttpModule:
DefaultAuthenticationModule 确保上下文中存在 Authentication 对象。无法继承此类。 
FileAuthorizationModule 验证远程用户是否具有访问所请求文件的 NT 权限。无法继承此类。 
FormsAuthenticationModule 启用 ASP.NET 应用程序以使用 Forms 身份验证。无法继承此类。 
PassportAuthenticationModule 提供环绕 PassportAuthentication 服务的包装。无法继承此类。 
SessionStateModule    为应用程序提供会话状态服务。 
UrlAuthorizationModule    提供基于 URL 的授权服务以允许或拒绝对指定资源的访问。无法继承此类。 
WindowsAuthenticationModule 启用 ASP.NET 应用程序以使用 Windows/IIS 身份验证。无法继承此类
--------------------------------------

些系统默认的HttpModule是在文件machine.config中配置的,和我们开发时使用到的web.config的关系是:是在
ASP.NET FRAMEWORK启动处理一个Http
Request的时候,它会依次加载machine.config和请求页面所在目录的web.config文件,如果在machine中配置了一个自己
的HttpModule,你仍然可以在所在页面的web.config文件中remove掉这个映射关系。
public class HelloWorldModule : IHttpModule
{
    public HelloWorldModule()
    {
    }
    public String ModuleName
    {
        get { return "HelloWorldModule"; }
    }
    // In the Init function, register for HttpApplication 
    // events by adding your handlers.
    public void Init(HttpApplication application)
    {
        application.BeginRequest += 
            (new EventHandler(this.Application_BeginRequest));
        application.EndRequest += 
            (new EventHandler(this.Application_EndRequest));
    }
    private void Application_BeginRequest(Object source, 
         EventArgs e)
    {
    // Create HttpApplication and HttpContext objects to access
    // request and response properties.
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.Write("<h1><font
color=red> HelloWorldModule: Beginning of
Request</font></h1><hr>");
    }
    private void Application_EndRequest(Object source, EventArgs e)
    {
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.Write("<hr><h1><font
color=red>HelloWorldModule: End of
Request</font></h1>");
    }
    public void Dispose()
    {
    }
}
    <system.web>
   <httpModules>
    <add name="HelloWorldModule" type="HelloWorldModule"/>
   </httpModules>
    </system.web>
-----------------------------------------------------------------------------------
深入HttpModule

个Http请求在被ASP.NET
Framework捕获之后会依次交给HttpModule以及HttpHandler来处理。hm与hh之间不是完全独立的,实际上,http请求在
hm传递的过程中会在某个事件内将控制权转交给hh的,而真正的处理在HttpHandler中执行完成后,HttpHandler会再次将控制权交还给
HttpModule
上面的代码中的HttpModule的Init()中的参数是HttpApplication类型,它具有许多事件,包括BeginRequest,EndRequest,AuthentiacteRequest
等等。
-----------------------------------------------------------------
IHttpHandler

是asp.net
Framework提供的一个接口,定义了如果要实现一个Http请求的处理所需要必须实现的一些系统约定。也就是说,如果你想要自行处理某些类型的
HTTP请求信息流的话,你需要实现这些系统约定才能做到。譬如一个*.aspx文件,用来处理此类型的Http请求,ASP.NET
FRAMEWORK将会交给一个名为System.Web.UI.PageHandlerFactory的HttpHandler类来处理。
HH
和HM一样,系统会在最初始由ASP.NET
FRAMEWORK首先加载machine.config中的HttpHandler,而后会加载Web应用程序所在目录的web.config中的用户
自定义的HttpHandler类。但是系统与我们自定义的HH之间的关系是"覆盖"的,也就是说如果我们自定义了一个针对"*.aspx"的
HttpHandler类的话,那么系统会将对此http请求的处理权完全交给我们自己定义的这个HttpHandler类来处理,而我们自己的
HttpHandler类则需要自己完全解析这个Http请求,并作出处理。
IHttpHandler
接口中最重要的方法ProcessRequest,这个方法就是HttpHandler用来处理一个Http请求,当一个
Http请求经过由HttpModule容器传递到HttpHandler容器中的时候,framework会调用HttpHandler的
ProcessRequest方法来做对这个Http请求做真正的处理。
framework实际上并不是直接把相关页面的HTTP请求定位到一个内部默认的IHttpHandler容器之上的,而是定位到了其内部默认的IHttpHandler Factory上了。IHttpHandler
Factory的作用就是对很多系统已经实现了的IHttpHandler容器进行调度和管理的,这样做的优点是大大增强了系统的负荷性,提升了效率。

时间: 2024-10-29 08:11:03

ASP.NET (HttpModule,HttpHandler)的相关文章

ASP.NET 管道事件与HttpModule, HttpHandler简单理解 -摘自网络

第一部分:转载自Artech  IIS与ASP.NET管道 ASP.NET管道 以IIS 6.0为例,在工作进程w3wp.exe中,利用Aspnet_ispai.dll加载.NET运行时(如果.NET运行时尚未加载).IIS 6引入了应用程序池的概念,一个工作进程对应着一个应用程序池.一个应用程序池可以承载一个或者多个Web应用,每个Web应用映射到一个IIS虚拟目录.与IIS 5.x一样,每一个Web应用运行在各自的应用程序域中. 如果HTTP.SYS接收到的HTTP请求是对该Web应用的第一

ASP.NET三剑客 HttpApplication HttpModule HttpHandler 解析

我们都知道,ASP.Net运行时环境中处理请求是通过一系列对象来完成的,包含HttpApplication,HttpModule, HttpHandler.之所以将这三个对象称之为ASP.NET三剑客是因为它们简直不要太重要,完全是ASP.NET界的中流砥柱,责任担当啊.了解它们之前我们得先知道ASP.NET管道模型. ASP.NET管道模型 这里以IIS6.0为例,它在工作进程w3wp.exe中会利用aspnet_isapi.dll加载.NET运行时.IIS6.0引入了应用程序池的概念,一个工

HttpModule &amp; HttpHandler

ASP.NET 处理请求的过程 inetinfo.exe:www 服务进程,IIS 服务 和 ASPNET_ISAPI.dll 都寄存在此进程中. ASPNET_ISAPI.dll:处理 .aspx 文件的 win32 组件.其实,IIS 服务器只能识别 .html 文件的,当发现被请求的文件是 .aspx 文件时,IIS 服务器将其交给 aspnet_isapi.dll 来处理. aspnet_wp.exe 进程:ASP.NET 框架进程,提供 .net 运行的托管环境,CLR (公共语言运行

httpModule HttpHandler 区别整理

httpModule HttpHandler 转自年轻的蜗牛 ASP.NET的HTTP请求处理方法 当 客户端向web服务器请求一个*.aspx的页面文件时,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后, 把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之 后,asp

asp.net HttpModule和HttpHandler

ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pipeline中各个HttpModule的处理,最后将HTML发送到客户端浏览 器中.HttpModule会在页面处理前和后对页面进行处理,所以它不会影响真正的页面请求.通常用在给每个页面的头部或者尾部添加一些信息(如版 权声明)等.IHttpModule与IHttpHandler的区别整理1.先后次

asp.net HttpModule与HttpHandler区别

一,什么是HttpHandler 在asp.net的网站中,在一个普通的请求地址"http://localhost:56093/Default.aspx"中"Default.aspx"就是handler. 也就是说在asp.net中page就是handler,在asp.net MVC中Controller就是handler,handler就是最终处理请求的那个类. 假如http://localhost:56093/Default.aspx这个页面输出的是"

ASP.NET 管道事件与HttpModule, HttpHandler简单理解

BeginRequest 指示请求处理开始 AuthenticateRequest 封装请求身份验证过程 AuthorizeRequest 封装检查是否能利用以前缓存的输出页面处理请求的过程 ResolveRequestCache 从缓存中得到相应时候触发 AcquireRequestState 加载初始化Session时候触发 PreRequestHandlerExecute 在Http请求进入HttpHandler之前触发 PostRequestHandlerExecute 在Http请求进

asp.net使用httphandler打包多CSS或JS文件以加快页面加载速度

介绍 使用许多小得JS.CSS文件代替一个庞大的JS或CSS文件来让代码获得更好的可维 护性,这是一个很好的实践.但这样做反过来却损失了网站的性能.虽然你应该将你的Javascript代码写在小文件中并且将大的CSS文件分割到小文件 中,当一个浏览器请求那些JS以及CSS文件,它却将为每一个文件产生一个请求.每一个HTTP请求将导致从你的浏览器到服务器上的一次"往返",从响应 服务器到客户端浏览器之间的等待时间称之为"延时".因此,如果你有四个JS文件以及三个CSS

ASP.NET HttpModule URL 重写 (一) 【Z】

大家好,又来和大家见面了,此次给大家带来的URL重写,关于URL重写是什么,有什么好处,如何重写,今天我和大家一起分享一下我的经验 一.URL重写 URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程.举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成 “UserProfile/1.aspx”. 二.URL重写优点 1.有利于百度.谷歌等搜索引擎收录于抓取,如果你是网站优化高手的化,这就是基本功了...