zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JS对象
    常见简单算法的实现
    JavaScript基础
    CSS3 边框 border-image
    HTTP消息头详解
    apache安装
    常见访问错误整理
    apache虚拟主机配置
    apache配置项
    Windows下使用ssh-add报错 Error connecting to agent: No such file or directory
  • 原文地址:https://www.cnblogs.com/PerfectSoft/p/4214691.html
Copyright © 2011-2022 走看看