博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
httpHandlers和httpModules接口介绍 (3)
阅读量:6629 次
发布时间:2019-06-25

本文共 1781 字,大约阅读时间需要 5 分钟。

第三步:在Init事件中注册PreRequestHandlerExecute事件,并实现事件处理方法

class AuthenticModule:IHttpModule{public void Dispose(){}public void Init(HttpApplication context){context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);}void context_PreRequestHandlerExecute(object sender, EventArgs e){HttpApplication ha = (HttpApplication)sender;string path = ha.Context.Request.Url.ToString();int n = path.ToLower().IndexOf("Login.aspx"); if (n == -1) //是否是登录页面,不是登录页面的话则进入{}{if (ha.Context.Session["user"] == null) //是否Session中有用户名,若是空的话,转向登录页。{ha.Context.Response.Redirect("Login.aspx?source=" + path);}}}}

第四步:在Login.aspx页面的“登录”按钮中加入下面代码

protected void Button1_Click(object sender, EventArgs e){if(true)//判断用户名密码是否正确{ if (Request.QueryString["source"] != null){string s = Request.QueryString["source"].ToLower().ToString();   //取出从哪个页面转来的Session["user"] = txtUID.Text;Response.Redirect(s); //转到用户想去的页面}else{Response.Redirect("main.aspx");//默认转向main.aspx}} }

第五步:在Web.Conofig中注册一下这个HttpModule模块

3、多模块的操作

如果定义了多个HttpModule,在web.config文件中引入自定义HttpModule的顺序就决定了多个自定义HttpModule在处理一个HTTP请求的接管顺序。

HttpHandler

HttpHandler是HTTP请求的处理中心,真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。

HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。

IHttpHandler接口声明public interface IHttpHandler{bool IsReusable { get; }public void ProcessRequest(HttpContext context); //请求处理函数}示例:把硬盘上的图片以流的方式写在页面上class TestHandler : IHttpHandler{public void ProcessRequest(HttpContext context){FileStream fs = new FileStream(context.Server.MapPath("worm.jpg"), FileMode.Open);byte[] b = new byte[fs.Length];fs.Read(b, 0, (int)fs.Length);fs.Close();context.Response.OutputStream.Write(b, 0, b.Length);}public bool IsReusable{get{return true;}}}

转载地址:http://ergpo.baihongyu.com/

你可能感兴趣的文章
Java基础学习总结(8)——super关键字
查看>>
SSM整合,个人总结和step
查看>>
嵌入式Linux ARM汇编(三)——ARM汇编指令(四)
查看>>
嵌入式 Linux 系统移植——BSP分析
查看>>
Linux-基础命令测试(一)
查看>>
利用 onload 事件监控跨站资源
查看>>
[译]你真的了解外边距折叠吗
查看>>
Maven整合eclipse
查看>>
RFM模型——构建数据库营销的商业战役!(转)
查看>>
C#2.0 委托
查看>>
C语言基础知识【判断】
查看>>
linux和window双系统下修改系统启动项
查看>>
POJ 2195 Going Home【二分图最优匹配.KM】
查看>>
jQuery清空表单方法
查看>>
k8s sidecar, Ambassador, Adapter containers
查看>>
C#生成不重复的随机数(转)
查看>>
gulp+sass+react前端开发,环境搭建
查看>>
CNN卷机网络在自然语言处理问题上的应用
查看>>
Java文件操作①——XML文件的读取
查看>>
Linq快速入门——Lambda表达式的前世今生
查看>>