asp.net 注册 HTTP 处理程序 (httphandler配置)

创建自定义 HTTP 处理程序类后,必须在 Web.config 文件中注册该类。这将允许 ASP.NET 调用 HTTP 处理程序,以便处理对具有指定文件扩展名的资源的请求.

在Web.config 文件中,

对于在传统模式下运行的 IIS 7.0, 可以在 httpHandlers 节中注册处理程序,并将该处理程序映射到 Aspnet_isapi.dll 文件。

对于在集成模式下运行的 IIS 7.0,可以使用 system.WebServer 节中的 handlers 元素注册处理程序

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <!--<authentication mode="Forms">
      <forms cookieless="UseCookies" defaultUrl="Default.aspx" enableCrossAppRedirects="false" loginUrl="Login.aspx" name=".auth" path="/" protection="All" slidingExpiration="true" timeout="2"></forms>
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>-->

    <machineKey decryption="Auto" decryptionKey="BA161C482EB0DF2C5FC6BBF8E17E9E499F7070E98C1CD55E,IsolateApps" validationKey="AFD0C7CB6B9D4168623DE88E4C6399AAE8B879226D34D0FCAB25962B26C0DE75D421AC4D16A7700C312B7EE94075D816371149FCBECD47935712E1495D12171E,IsolateApps" />
    <httpHandlers>
      <!--iis7经典模式开启所有请求过滤,同时需设置 system.webServer/handlers-->
      <add path="*.jpg" verb="*" type="httpWeb.DownloadHandler" validate="true" />
      <!--<add path="*.jpg" verb="*" type="httpWeb.DownloadHandler" validate="true" />-->
      <!--<add path="*.rar" verb="*" type="httpWeb.DownloadHandler" validate="false" />-->
    </httpHandlers>
    <httpModules>
      <!--<add name="DownloadModule" type="httpWeb.DownloadModule" />-->
      <!--经典模式modules-->
    </httpModules>

  </system.web>
  <!--<location path="sub1">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>-->
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <!--<add name="DownloadModule" type="httpWeb.DownloadModule" />-->
      <!--集成模式 modules-->
    </modules>
    <handlers accessPolicy="Read, Execute, Script">
      <!--iis7经典模式开启所有请求过滤,同时需设置 system.web/httpHandlers,scriptProcessor为你程序使用的aspnet_isapi版本,如程序运行在64位下就Framework64的aspnet_isapi.dll-->      <add name="DownloadHandler" path="*.jpg" verb="*" type="httpWeb.DownloadHandler" modules="IsapiModule" 
scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="bitness32" />
      <!--iis7集成模式只需设置此处-->
      <!--<add name="DownloadHandler" path="*.jpg" verb="*" type="httpWeb.DownloadHandler" />-->
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <!--在将应用程序从使用经典模式更改为集成模式时,如果要保留经典模式(和 IIS 6.0)的自定义模块和处理程序注册,
    必须设置 validation 元素以避免出现警告消息。-->
  </system.webServer>

</configuration>

  

//downloadHandler.cs

using System;
using System.Web;

namespace httpWeb
{
    public class DownloadHandler : IHttpHandler
    {
        /// <summary>
        /// 您将需要在您网站的 web.config 文件中配置此处理程序,
        /// 并向 IIS 注册此处理程序,然后才能进行使用。有关详细信息,
        /// 请参见下面的链接: http://go.microsoft.com/?linkid=8101007
        /// </summary>
        #region IHttpHandler Members

        public bool IsReusable
        {
            // 如果无法为其他请求重用托管处理程序,则返回 false。
            // 如果按请求保留某些状态信息,则通常这将为 false。
            get { return true; }
        }

        public void ProcessRequest(HttpContext context)
        {
            //在此写入您的处理程序实现。
          
            HttpRequest request = context.Request;
            HttpResponse response = context.Response;

        }

        #endregion
    }
}

  

原文地址:https://www.cnblogs.com/venje/p/12309700.html

时间: 2024-08-01 10:33:43

asp.net 注册 HTTP 处理程序 (httphandler配置)的相关文章

ASP.NET三剑客 HttpApplication HttpModule HttpHandler 解析

我们都知道,ASP.Net运行时环境中处理请求是通过一系列对象来完成的,包含HttpApplication,HttpModule, HttpHandler.之所以将这三个对象称之为ASP.NET三剑客是因为它们简直不要太重要,完全是ASP.NET界的中流砥柱,责任担当啊.了解它们之前我们得先知道ASP.NET管道模型. ASP.NET管道模型 这里以IIS6.0为例,它在工作进程w3wp.exe中会利用aspnet_isapi.dll加载.NET运行时.IIS6.0引入了应用程序池的概念,一个工

ASP.NET-自定义HttpModule与HttpHandler

在之前的ASP.NET是如何在IIS下工作的这篇文章中介绍了ASP.NET与IIS配合工作的机制,在http请求经过一系列处理后,最后到达ASP.NET管道中,这时,就是Http Modules和HttpHandler出场的时候了. 再来摆出管道工作时序图来一看: HttpModule HttpModule是类似于过滤器的作用,可以没有,也可以有任意个,每一个都可以订阅管道事件中的任意个事件,在每个订阅的事件中可自定义功能实现. HttpModule是实现IHttpModule接口的类.接口如下

Asp.net中的web.config配置

目录 Asp.net中的web.config配置... 1 一. 配置文件保存位置... 2 二. 配置文件加载顺序... 2 三. 配置文件节点介绍... 3 1. . 3 2. . 5 3. . 5 4. . 6 . 11 四. 针对配置文件的一些编程操作... 11 1. 运行时进行配置文件的修改... 11 2. 配置节点的加密... 12 web.config是asp.net中保存配置信息(比如数据库连接字符串等)的重要文件.它是基于xml的文本文件方式放在Web应用程序的任何目录中,

ASP.NET 5 入门 (2) – 自定义配置

ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持多种跨平台的配置文件格式(如XML, Json, Ini和环境变量) 标准的配置文件如project.json不再包括任何自定义的配置信息. 自定义的配置完全由开发者另行建立和加载 自定义的配置信息可

002-一般处理程序(HttpHandler)

一般处理程序(HttpHandler):是一个实现System.Web.IHttpHandler接口的特殊类.任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提.(凡是没有实现此接口的类,就不能被浏览器请求.)它由支持ASP.NET的服务器调用和启动运行.一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文).简单的说:可以通过创建一个HttpHandler程序来生成浏览

[ASP.NET Core 3框架揭秘] 配置[5]:配置数据与数据源的实时同步

在<配置模型总体设计>介绍配置模型核心对象的时候,我们刻意回避了与配置同步相关的API,现在我们利用一个独立文章来专门讨论这个话题.配置的同步涉及到两个方面:第一,对原始的配置源实施监控并在其发生变化之后重新加载配置:第二,配置重新加载之后及时通知应用程序进而使应用能够及时使用最新的配置.要了解配置同步机制的实现原理,我们先得了解一下配置数据的流向. 一.配置数据流 通过前面的介绍,我们已经对配置模型有了充分的了解,处于核心地位的 IConfigurationBuilder对象借助注册的ICo

[ASP.NET Core 3框架揭秘] 配置[3]:配置模型总体设计

原文:[ASP.NET Core 3框架揭秘] 配置[3]:配置模型总体设计 在<读取配置数据>([上篇],[下篇])上面一节中,我们通过实例的方式演示了几种典型的配置读取方式,接下来我们从设计的维度来重写认识配置模型.配置的编程模型涉及到三个核心对象,分别通过三个对应的接口(IConfiguration.IConfigurationSource和IConfigurationBuilder)来表示.如果从设计层面来审视背后的配置模型,还缺少另一个名通过IConfigurationProvide

[ASP.NET Core 3框架揭秘] 配置[6]:多样化的配置源[上篇]

.NET Core采用的这个全新的配置模型的一个主要的特点就是对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源.如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等).如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义IConfigurationSource的方式将其他形式数据作为配置来源. 一.MemoryConfigurationSource 在之前的实例演示都在使用MemoryConfigu

[ASP.NET Core 3框架揭秘] 配置[9]:自定义配置源

我们在前面对配置模型中默认提供的各种IConfigurationSource实现类型进行了深入详尽的介绍,如果它们依然不能满足项目中的需求,我们还可以通过自定义IConfigurationSource实现类型来支持我们希望的配置源.就配置数据的持久化方式来说,将配置存储在数据库中应该是一种常见的方式.接下来我们会创建一个针对数据库的IConfigurationSource实现类型,它采用Entity Framework Core来完成数据库的存取操作. 我们将这个自定义Configuration