HttpModule的认识与深入理解
2009-12-29 12:41
381 查看
HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTTP请求信息之上,或者针对截获的这个HTTP请求信息作一些额外的工作,或者在某些情况下干脆终止满足一些条件的HTTP请求,从而可以起到一个Filter过滤器的作用。
首先你要实现IHttpModule接口这个接口只有两个方法,一个是Init方法一个Dispose方法.
Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// UrlReWriteHttpModule 的摘要说明
/// </summary>
public class UrlReWriteHttpModule : IHttpModule
{
public UrlReWriteHttpModule()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region IHttpModule 成员
public void Dispose()
{
throw new Exception("The method or operation is not implemented.");
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpContext context = (sender as HttpApplication).Context;
//string Url1 = context.Request.Path;
//string Url2 = context.Request.PathInfo;
//string Url3 = context.Request.Url.ToString();
//得到整个的网络地址
string fullOrigionalpath = context.Request .Url.ToString();
if (fullOrigionalpath.Contains("/Books.aspx"))
{
context.RewritePath("Products.aspx?Category=Books");//重写地址,重写后地址栏中的显示不变,但是真正返回的页面是被重写的页面
}
else if (fullOrigionalpath.Contains("/DVDs.aspx"))
{
context.RewritePath("Products.aspx?Category=DVDs");
}
else if (fullOrigionalpath.Contains("/DVDs.aspx"))
{
context.RewritePath("Products.aspx?Category=CDs.aspx");
}
}
#endregion
}
注册web.config事件
-------------------------------------------------完成------------------------------------------------
从上面的例子看出,其实是一个好简单的实现方法,就是在init中注册处理过程事件,把代码写完后,在web.congif中HttpModules注册就完成了.
开发程序千变万变, 通过这一方法可以编写出好多合适自己用的功能,这需要大家去实践了. 收集与整理,且当成长的回忆.
首先你要实现IHttpModule接口这个接口只有两个方法,一个是Init方法一个Dispose方法.
Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// UrlReWriteHttpModule 的摘要说明
/// </summary>
public class UrlReWriteHttpModule : IHttpModule
{
public UrlReWriteHttpModule()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region IHttpModule 成员
public void Dispose()
{
throw new Exception("The method or operation is not implemented.");
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpContext context = (sender as HttpApplication).Context;
//string Url1 = context.Request.Path;
//string Url2 = context.Request.PathInfo;
//string Url3 = context.Request.Url.ToString();
//得到整个的网络地址
string fullOrigionalpath = context.Request .Url.ToString();
if (fullOrigionalpath.Contains("/Books.aspx"))
{
context.RewritePath("Products.aspx?Category=Books");//重写地址,重写后地址栏中的显示不变,但是真正返回的页面是被重写的页面
}
else if (fullOrigionalpath.Contains("/DVDs.aspx"))
{
context.RewritePath("Products.aspx?Category=DVDs");
}
else if (fullOrigionalpath.Contains("/DVDs.aspx"))
{
context.RewritePath("Products.aspx?Category=CDs.aspx");
}
}
#endregion
}
注册web.config事件
-------------------------------------------------完成------------------------------------------------
从上面的例子看出,其实是一个好简单的实现方法,就是在init中注册处理过程事件,把代码写完后,在web.congif中HttpModules注册就完成了.
开发程序千变万变, 通过这一方法可以编写出好多合适自己用的功能,这需要大家去实践了. 收集与整理,且当成长的回忆.
相关文章推荐
- 艾伟_转载:HttpModule的认识与深入理解
- HttpModule的认识与深入理解及MVC运行机制
- HttpModule的认识与深入理解
- HttpModule的认识与深入理解 --http://www.cnblogs.com/SAL2928/archive/2009/11/07/1597862.html
- HttpModule的认识与深入理解
- HttpModule的认识与深入理解
- 深入理解asp.net里的HttpModule机制
- 深入理解asp.net里的HttpModule机制
- 深入理解asp.net里的HttpModule机制
- 深入理解asp.net里的HttpModule机制
- 深入理解asp.net里的HttpModule机制
- 深入理解HttpModule和HttpHandler
- 深入理解asp.net里的HttpModule机制
- http://flyvenus.net/ 深入android http://www.eoeandroid.com/thread-67739-1-1.html 从进程-线程的角度,理解Activity,Service,Broadcast - 4.7更
- 深入理解 Java中的 流 (Stream) --转自石头儿 http://www.cnblogs.com/shitouer/
- 深入理解HTTP消息头
- HttpModule的认识
- 深入理解HTTP TCP/IP Socket
- nginx模块学习——nginx_http_push_module模块深入讲解和聊天室实现
- 深入理解JavaScript系列(3):全面解析Module模式