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
    }
}

  

posted @ 2020-02-14 21:35  不经一番寒彻骨  阅读(439)  评论(0编辑  收藏  举报