Asp.NET中 HttpHandler、HttpModule深入分析

在我们 .NET web.config 的配置文件中经常会看到HttpHandler与HttpModule这两个词,那么你真正理解这两个词吗?下面就给大家讲解一下HttpHandler、HttpModule的作用和应用。

什么是IHttpHandler?

IHttpHandler定义了实现HTTP请求的一些基本约定,简单理解就是配置一个HttpHandler就实现了一个URL请求。如果一个IHttpHandler定义了其实现类,那么就相当于是覆盖关系。

IHttpHandler的使用方法

HttpHandler,则需要继承自IHttpHandler接口,如下面的代码:

public class SampleHttpHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("SampleHttpHandler返回的结果!");
}
}

SampleHttpHandler继承自IHttpHandler接口,接口中有一个需要实现的方法ProcessRequest,这个方法就是具体处理的内容。

当cs代码写好后只需要配置web.config即可,如下所示:

 <add verb="*" path="/SampleHttpHandler" type="Sample.SampleHttpHandler"/>

这样SampleHttpHandler就是配置成功了,”/SampleHttpHandler”就是可以访问的路径了。

什么是HttpModule?

简单说HttpModule就是一个过滤器。任何一个HTTP请求在做任何处理前都必须经过HttpModule的处理,HttpModule就是HTTP请求的必经之路。其工作原理就是监听HttpRequest,对请求做统一吃处理,比如可以处理将所有为以”/”结尾的url重定向到以”/”结尾的URL中。

HttpModule的使用方法

HttpModule都必须实现IHttpModule接口,在实现类中做具体的处理。
比如下面的例子:

<httpModules>
<add name="SampleHttpModule" type="Sample.SampleHttpModule,Sample"/>
</httpModules>

只要将SampleHttpModule完整空间路径配置正确即可。

下面的图反应了HttpHandler、HttpModule的关系

到此你应该明白HttpHandler、HttpModule的区别和什么时候用HttpHandler,什么时候用HttpModule。将HttpHandler比作完整工艺流程,那么HttpModule负责的则是流程中的一个环节。

时间: 2024-11-27 18:09:05

Asp.NET中 HttpHandler、HttpModule深入分析的相关文章

ASP.Net中自定义Http处理及应用之HttpModule篇

asp.net HttpHandler实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response).HttpHandler功能的实现通过实现IHttpHandler接口来达到.而HttpModule实现了类似于ISAPI Filter的功能.   HttpModule的实现HttpModules实现了类似于ISAPI Filter的功能,在开发上,通常需要经过以下步骤: 1.编写一个类,实现IhttpModule接口 2.实现Init 方法,

asp.net中httpModule计算页面的执行时间

ASP.NET系统中默认的HttpModule: DefaultAuthenticationModule 确保上下文中存在 Authentication 对象.无法继承此类. FileAuthorizationModule 验证远程用户是否具有访问所请求文件的 NT 权限.无法继承此类. FormsAuthenticationModule 启用 ASP.NET 应用程序以使用 Forms 身份验证.无法继承此类. PassportAuthenticationModule 提供环绕 Passpor

Asp.Net中的HttpHandler

Asp.Net中的HttpHandler 很多时候,我们新建一个xxx.aspx页和xxx.aspx.cs文件,不过是为了实现一个很简单的功能,如:输出xmlDom,注销并跳转,并没有什么html的输出,很是麻烦,需要新建一个页,删除多余的html,并在page_load里面写处理代码.而使用HttpHandler就不需要这么麻烦了. 可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的.预定义类型的 HTTP 请求.响应这些特定请求的是在 HttpHandl

在ASP.NET中实现Url Rewriting

asp.net 概要 分析如何使用微软提供的ASP.NET来对动态产生的URL地址进行网址重写. 网址重写是实现一种截取网址请求并将其进行处理后重新指向到一个指定的网址的过程.作者本人在对各种实现网址重写的技术进行研究和探讨后得出的经验和方法,希望能对您有所帮助. 内容简介 稍微花点时间看一看你做的网站里头的URL地址,你看到类似这样的地址吗http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary ?也许你

HttpHandler HttpModule入门篇

HttpHandler HttpModule入门篇 ASP.Net处理Http Request时,使用Pipeline(管道)方式,由各个HttpModule对请求进行处理,然后到达 HttpHandler,HttpHandler处理完之后,仍经过Pipeline中各个HttpModule的处理,最后将HTML发送到客户端浏览器中. 生命周期中涉及到几个非常重要的对象:HttpHandler,HttpModule,IHttpHandlerFactory,他们的执行(顺序)大致的执行过程是这样的:

HttpHandler HttpModule入门篇_实用技巧

生命周期中涉及到几个非常重要的对象:HttpHandler,HttpModule,IHttpHandlerFactory,他们的执行(顺序)大致的执行过程是这样的:client端发送页面请求,被IIS的某个进程截获,它根据申请的页 面后缀(.aspx)不同,调用不同的页面处理程序(.asp->asp.dll; .aspx->ISAPI.dll).而页面处理程序在处理过程中,则要经历HttpModule,HttpHandler的处理:前者HttpModule用于页面处理前和处理后的一些事件的处理

在ASP.NET中实现AJAX

ajax|asp.net Asynchronous JavaScript and XML(AJAX)最近掀起的高潮,要完全归功于Google在Google Suggest和Google Maps中的使用.对ASP.NET而言,AJAX不需要回传就能进行服务器端处理,从而使客户机(浏览器)具有丰富的服务器端能力.换句话说,它为异步指派和处理请求与服务器响应提供了一个框架.AJAX利用了一些不是很新颖的已有技术,但是对这些技术(加到一起就是AJAX)的爱好最近突然升温. 请尝试Michael Sch

ASP.NET中常用的文件上传下载方法

asp.net|上传|下载     文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括:1.如何解决文件上传大小的限制2.以文件形式保存到服务器3.转换成二进制字节流保存到数据库以及下载方法4.上传Internet上的资源 第一部分:    首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改WEB.Config文件来自定义最大文件大小,如下:<

Asp.net中基于Forms验证的角色验证授权

asp.net Asp.net中基于Forms验证的角色验证授权 Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问