Asp.Net HttpHandler 妙用

 更新时间:2009年04月13日 10:35:05   作者:  
很多时候,我们新建一个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 Core 文件响应压缩的常见使用误区

    ASP.NET Core 文件响应压缩的常见使用误区

    在微软官方文档中,未明确指出文件压缩功能的使用误区。本文将对 ASP.NET Core 文件响应压缩的常见使用误区做出说明。
    2021-05-05
  • C#反射技术的简单操作(读取和设置类的属性)

    C#反射技术的简单操作(读取和设置类的属性)

    反射的作用想必大家都知道了吧,少量属性的自动化操作手动添加几下当然是没有问题的,但是属性数量较多的时候敲起这些繁锁的代码可以困了,再说对扩展和维护性造成很多的不遍,以下代码中如不能直接使用请添加using System.Text;的引用。
    2011-01-01
  • ASP.NET Core单文件和多文件上传并保存到服务端的方法

    ASP.NET Core单文件和多文件上传并保存到服务端的方法

    这篇文章主要介绍了ASP.NET Core单文件和多文件上传并保存到服务端的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 国产化之Arm64 CPU+银河麒麟系统安装.NetCore的步骤详解

    国产化之Arm64 CPU+银河麒麟系统安装.NetCore的步骤详解

    这篇文章主要介绍了国产化之Arm64 CPU+银河麒麟系统安装.NetCore,这里就以ARM架构举例,其它CPU平台的安装过程都一样,要下载的包不同而已,感兴趣的朋友跟随小编一起看看吧
    2022-03-03
  • Log4net在.Net Winform项目中的使用实例详解

    Log4net在.Net Winform项目中的使用实例详解

    Log4net是一个流行的日志记录工具,可以帮助开发人员在应用程序中实现高效的日志记录,本文将提供一个详细的分步骤示例,来帮助您在.Net Winform项目中使用Log4net,感兴趣的朋友一起看看吧
    2023-08-08
  • .NET逻辑分层架构总结

    .NET逻辑分层架构总结

    本人将从另一个角度来解析.NET分层架构的真正奥秘。分层,一些技术功底比较薄弱的程序员听到分层就会联想到三层架构(BLL,DAL之类的),其实不是,分层是一个很大的技术框架思想,三层架构只不过是对普通的信息系统来说,将信息的流转通过三层来分解,
    2015-06-06
  • ASP.NET过滤HTML标签只保留换行与空格的方法

    ASP.NET过滤HTML标签只保留换行与空格的方法

    这篇文章主要介绍了ASP.NET过滤HTML标签只保留换行与空格的方法,包含网上常见的方法以及对此方法的改进,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • ASP.NET Core 导入导出Excel xlsx 文件实例

    ASP.NET Core 导入导出Excel xlsx 文件实例

    本篇文章主要介绍了ASP.NET Core 导入导出Excel xlsx 文件,非常具有实用价值,需要的朋友可以参考下。
    2016-12-12
  • asp.net利用后台实现直接生成html分页的方法

    asp.net利用后台实现直接生成html分页的方法

    这篇文章主要介绍了asp.net利用后台实现直接生成html分页的方法,比较简洁实用,需要的朋友可以参考下
    2014-08-08
  • ASP.NET页面间数据传递的几种方法介绍

    ASP.NET页面间数据传递的几种方法介绍

    在ASP.NET中,页面间数据传递的方法有很多。下面为大家总结一下,页面间数据传递的方法,来看作者的分析。
    2013-05-05

最新评论