妙用Asp.Net中的HttpHandler

很多时候, 我们 新建一个xxx.aspx页和xxx.aspx.cs文件,不过是为了实现一个很简单的功能,如:输出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这个文件,同样,这个技巧可以用在很多方面,例如防止盗链,下载统计等  

你可能感兴趣的:(职场,asp.net,休闲,HttpHandler)