Asp.Net HttpHandler 妙用

如:输出xmlDom,注销并跳转,并没有什么html的输出,很是麻烦,需要新建一个页,删除多余的html,并在page_load里面写处理代码。而使用HttpHandler就不需要这么麻烦了。
可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的、预定义类型的 HTTP 请求。响应这些特定请求的是在 HttpHandler 类中定义的可执行代码,而不是常规的 ASP 或 ASP.NET Web 页。HTTP 处理程序向您提供一种方法,使您可以与 IIS Web 服务器的低级别的请求和响应服务交互,同时提供极其类似于 ISAPI 扩展但编程模型较为简单的功能。
例如我现在需要实现一个注销并跳转的Logout.aspx页面,下面的示例主要实现了响应客户端对名为 logout.aspx 的页的请求,实现注销并跳转。对 logout.aspx 的所有请求均由包含在程序集 WebUC.dll 中的命名空间 WebUC.HttpHandler 中的 LogoutHttpHandler 提供服务。
修改web.config,在<system.web></system.web>中增加如下脚本:
<httpHandlers>
<add verb="GET" path="Logout.aspx" type="WebUC.HttpHandler.LogoutHttpHandler, WebUC" />
</httpHandlers>
其中WebUC.HttpHandler.LogoutHttpHandler是我要实现Logout.aspx功能的类,WebUC是我web项目的dll。(具体介绍可以参阅msdn)
下面是LogoutHttpHandler的代码,继承借口,重写方法和属性。 


代码如下:

using System;
using System.Web;
using System.Web.Caching;
using System.Web.Security;
namespace WebUC.HttpHandler
{
public class LogoutHttpHandler : IHttpHandler
{
/// <summary>
/// 通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。
/// </summary>
/// <param name="context">HttpContext 对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。 </param>
public void ProcessRequest (HttpContext context)
{
FormsAuthentication.SignOut();
context.Response.Redirect("Login.aspx",true);
}
/// <summary>
/// 获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。
/// </summary>
public bool IsReusable
{
get
{
return false;
}
}
}
}
}

编译后,我就可以直接使用http://***/logout.aspx 来实现注销了,而实际上,我的web目录下并没有logout.aspx这个文件,同样,这个技巧可以用在很多方面,例如防止盗链,下载统计等。

(0)

相关推荐

  • asp.net HttpHandler操作Session的函数代码

    复制代码 代码如下: using System; using System.Web; using System.Web.SessionState; public class HandleDataRequst : IHttpHandler, IRequiresSessionState { public void ProcessRequest (HttpContext context) { //context.Session["name"] } 这里的重点是一定要实现IRequiresSe

  • asp.net 请求输入到输出的全过程及httpHandler和httpModuler详细介绍

    最近看了几篇讲述httpHandler和HttpModuler的文章,总的来说还是Fish li的那篇文章给力,但是他是大牛,他写出来的文章技术含量太高,对于像我这样的小兵, 要完全看懂估计需要看几遍.虽然说没有完全了解底层操作,但是我也算明白了一个请求从进入IIS到最后输出都经历了哪些过程.说实话,原来我以为.Net的类的子 类都是设计者自己设计的,没有考虑到真正的程序员是否可以完全掌握.了解了底层操作,我发现我的那个观点是多么的无知,每个.Net的类都是对应现实中的一种对 象,比如说Mvc3

  • asp.net HttpHandler实现图片防盗链

    Step.1:创建文件 CustomHandler.cs,代码如下: 复制代码 代码如下: using System; using System.Web; namespace CustomHandler{ public class JpgHandler : IHttpHandler{ public void ProcessRequest(HttpContext context){ // 获取文件服务器端物理路径 string FileName = context.Server.MapPath(c

  • asp.net下结合HttpHandler实现图片防盗链

    复制代码 代码如下: #region IHttpHandler 成员 bool IHttpHandler.IsReusable { get { return true; } } void IHttpHandler.ProcessRequest(HttpContext context) { string FileName = context.Server.MapPath(context.Request.FilePath); if (context.Request.UrlReferrer.Host

  • Asp.Net HttpHandler 妙用

    如:输出xmlDom,注销并跳转,并没有什么html的输出,很是麻烦,需要新建一个页,删除多余的html,并在page_load里面写处理代码.而使用HttpHandler就不需要这么麻烦了.可以用任何符合公共语言规范 (CLS) 的语言编写自定义 HTTP 处理程序来处理特定的.预定义类型的 HTTP 请求.响应这些特定请求的是在 HttpHandler 类中定义的可执行代码,而不是常规的 ASP 或 ASP.NET Web 页.HTTP 处理程序向您提供一种方法,使您可以与 IIS Web

  • HttpHandler HttpModule入门篇

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

  • ASP.NET笔记之 Httphandler的操作详解

    1.httphandler 实例1:通过生成一张动态图片输出客户端的IP地址.操作系统类型.浏览器类型 复制代码 代码如下: <%@ WebHandler Language="C#" Class="visitor" %> using System;using System.Web; public class visitor : IHttpHandler { public void ProcessRequest(HttpContext context)  

  • asp.net下OnClientClick的妙用!

    做网页经常要和JavaScript打交道,经常要用JavaScript做一些客户端的验证,但是如果我们的按钮用的是HTML控件的话,验证通过后无法调用后台代码,如果用服务器端控件,验证不通过有要刷新页面,这个有时候挺烦人的,能不能让服务器段的按钮调用客户端的验证,如果验证成功后在调用服务器端的方法,这样既减少了网路传输,给用户感觉也好.          当我们用模板列做删除数据的时候一般都会返回一个对话框询问用户是否确认,其实我们是通过修改模板列里的button的OnClientClick属性

  • asp.net 退出登陆(解决退出后点击浏览器后退问题仍然可回到页面问题)

    复制代码 代码如下: Session.Abandon(); Response.Redirect("Login.aspx"); 但是这样点点击浏览器的后退仍然可以回到刚才的页面,这可不行,在网上找了一下,也有不少人遇到这样的问题,试了一些方法,都不管用.不过最后还是找到,共享一下. http://blog.csdn.net/lhypang2006/archive/2008/03/11/2170751.aspx 复制代码 代码如下: Session.Abandon(); Response.

  • asp.net 文件上传实例汇总

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关键代码: 复制代码 代码如下: <form id="form1" runat="server">     <asp:FileUpload ID="FileUpload1" runat="server" />

随机推荐