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

浙公网安备 33010602011771号