ASP.NET HttpHandler使用总结

  在网络开发中,基本上任何项目都会涉及到一些xml配置文件,用来存放一些敏感数据,通过这些文件都是不允许客户端浏览的,那么如何禁止用户浏览?直接对有关xml文件的请求做特殊处理即可。在ASP.NET中,HttpHandler用来处理特定类型的请求。HttpHandler定义如下:

public interface IHttpHandler
    {
        // Summary:
        //     Gets a value indicating whether another request can use the System.Web.IHttpHandler
        //     instance.
        //
        // Returns:
        //     true if the System.Web.IHttpHandler instance is reusable; otherwise, false.
        bool IsReusable { get; }

        // Summary:
        //     Enables processing of HTTP Web requests by a custom HttpHandler that implements
        //     the System.Web.IHttpHandler interface.
        //
        // Parameters:
        //   context:
        //     An System.Web.HttpContext object that provides references to the intrinsic
        //     server objects (for example, Request, Response, Session, and Server) used
        //     to service HTTP requests.
        void ProcessRequest(HttpContext context);
    }

  以接口的形式定义,所以自定义类只要实现该接口,即可对特定类型的请求进行特殊处理。就以禁止下载xml文件为例,演示如何使用IHttpHandler。

  定义一个CustomHandler类,实现IHttpHandler接口

namespace AspNet.HttpHandler.HttpHandler
{
    public class CustomHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get { return false; }
        }

        public void ProcessRequest(HttpContext context)
        {
            //获取文件扩展名
            string fileExtension = Path.GetExtension(context.Request.RawUrl);
            if (fileExtension.Equals(".xml"))
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("File not found");
            }
        }
    }
}

  现在在Web.config文件中对CustomHandler进行在IIS7中的配置:

<system.webServer>
  <handlers>
      <add name="CustomHandler" path="*.xml" verb="GET" type="AspNet.HttpHandler.HttpHandler.CustomHandler"/>
  </handlers></system.webServer>

  path:代表处理的请求类型,以后是处理所有的xml文件请求

  verb:代表请求的方式,如:GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS

  type:处理这些请求的HttpHandler

  在IIS6中配置如下:

<system.web>
  <httpHandlers>
      <add path="*.xml" verb="GET" type="AspNet.HttpHandler.HttpHandler.CustomHandler"/>
  </httpHandlers>
</system.web>

  现在如果再请求xml文件,得到的返回结果是:File not found

时间: 2024-12-20 09:27:34

ASP.NET HttpHandler使用总结的相关文章

Asp.Net IHttpHandler介绍

Asp.Net IHttpHandler介绍 ASP.NET响应Http请求时常用的两个处理接口是IHttpHandler和IHttpModule. 一般的,IHttpHandler用来处理一类特定的请求,比如对每个*.asp, *.aspx文件的分别处理.而IHttpModule通常用来处理所以请求共同需要的操作,比如对所以请求页面进行某些相同的检查功能. 我们先来看一下IIS服务器在相应Http请求时的处理步骤. ASP.NET中有管线(Pipeline)这个概念,意指每个ASP.NET请求

httpModules与httpHandlers

ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端. inetinfo.exe进程:是www服务的进程,IIS服务和ASPNET

httpModules 与 httpHandlers

ASP.NET对请求处理的过程:当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端.    inetinfo.exe进程:是www服务的进程,IIS服务和ASPN

.net页面生命周期【转】

.Net 页面生命周期IIS 所收到的对某 Microsoft ASP.NET 页面的每个请求都被移交给 ASP.NET HTTP 管线.HTTP 管线由一系列托管对象组成,这些对象按顺序处理该请求,并完成从 URL 到普通 HTML 文本的转换.HTTP 管线的入口点是 HttpRuntime 类.ASP.NET 基础结构为辅助进程中所承载的每个 AppDomain (应用程序域)创建此类的一个实例请注意,该辅助进程为当前正在运行的每个 ASP.NET 应用程序维护一个不同的 AppDomai

HTTP生命周期解析

ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端.     inetinfo.exe进程:是www服务的进程,IIS服务和AS

JSP中的Servlet及Filter

asp.net中,如果开发人员想自己处理http请求响应,可以利用HttpHandler来满足这一要求:类似的,如果要拦截所有http请求,可以使用HttpMoudle.java的web开发中,也有类似的处理机制,与HttpHandler应对的是HttpServlet,与HttpModule对应的则是Filter. 一.HttpServlet 先看一个简单的示例: 1 package com.cnblogs.yjmyzz.servlet; 2 3 import java.io.IOExcepti

web.config中的httpModules与httpHandlers[转载]

ASP.NET对请求处理的过程: 当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会通过http管道(Http  PipeLine)将请求发送给ASPNET_WP.exe进程,在ASPNET_WP.exe进程中通过HttpRuntime来处理这个请求,处理完毕将结果返回客户端. inetinfo.exe进程:是www服务的进程,IIS服务和ASPNE

.NET Core技术研究-中间件的由来和使用

我们将原有ASP.NET应用升级到ASP.NET Core的过程中,会遇到一个新的概念:中间件. 中间件是ASP.NET Core全新引入的概念.中间件是一种装配到应用管道中以处理请求和响应的软件. 每个组件: 选择是否将请求传递到管道中的下一个组件. 可在管道中的下一个组件前后执行工作. 单独看以上中间件的定义,一个很直观的感觉:中间件是HTTP请求管道中的一层层的AOP扩展. 在展开介绍中间件之前,我们先回顾一下ASP.NET中HttpHandler和HttpModule的处理方式.  一.

大家好

http://www.yugaopian.com/people/259723 http://www.yugaopian.com/people/259744 http://www.yugaopian.com/people/259783 http://www.yugaopian.com/people/259824 http://www.yugaopian.com/people/259839 http://www.yugaopian.com/people/259933 http://www.yugao