在我们 .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负责的则是流程中的一个环节。