基于HttpModule扩展
成都创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为高陵企业提供专业的网站设计制作、网站制作,高陵网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
一般处理页面就是HttpHandler区域
-------------------------------封装类库
using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Text.RegularExpressions; /* ************************** * 案例功能: * 1,URL地址栏阻止(参数为aspx则跳转到错误页面) * 2,Form表达阻止(表单的值为aspx则弹出错误) * 3,阻止使用session ************************** */ namespace HttpModuleDome { public class MyHttpModule : IHttpModule { #region IHttpModule 成员 public void Dispose() { } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); context.AcquireRequestState += new EventHandler(context_AcquireRequestState); } //开始请求阶段 void context_BeginRequest(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; HttpContext context = application.Context; //Url地址栏阻止 if (context.Request.QueryString.Count > 0) { for (int i = 0; i < context.Request.QueryString.Count; i++) { if (context.Request.QueryString[context.Request.QueryString.Keys[i]] == "aspx") { context.Response.Redirect("http://www.baidu.com"); context.Response.End(); } } } //Form表单阻止 if (context.Request.Form.Count > 0) { for (int i = 0; i < context.Request.Form.Count; i++) { if (context.Request.Form[context.Request.Form.Keys[i]] == "aspx") { context.Response.Write(""); context.Response.End(); } } } } //进入了HttpHandler区域,已经有了session void context_AcquireRequestState(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication;//Global.asax的基类 HttpContext context = application.Context;//封装了ASP.NET要处理的单次请求的所有信息 if (context.Session.Count > 0) { //context.Response.End();//直接跳过AcquireRequestState之后的请求,结束请求 } } #endregion } }
------------------------------------web.config里面引用
------------------------------------也可以在Global.asax文件里面写
<%@ Application Language="C#" %>
本文题目:基于HttpModule扩展
文章源于:http://scyanting.com/article/jcosoc.html