HttpHandlers 和 HttpModules 通过扩展原始的页面框架,提供了用于处理请求和响应的两种途径。HttpHanders的主要目的是处理对某种特定文件或者在URL中对某个文件路径的请求,而HttpModule则主要被用于在最开始的阶段处理一个请求以及在最后阶段处理一个响应。
HttpHandlers是指实现了IHttpHandler接口的类。它们在ProcessRequest()方法中获得对当前HttpContext对象的引用,并能依靠HttpContext对象的属性来执行代码。典型的例子是,HttpHandler分析来自Request属性(对象)的数据并通过Response属性(对象)发送回某些东西。HttpHandler同时实现了一个IsReusable属性,它告诉Asp.net是否类的同一个实例能够用于处理并发(subsequent)的请求
第一步:首先新建一个类库项目:
using System;
using System.Web;
public class Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.Write("aaa");
}
public bool IsReusable
{
get
{
return false;
}
}
}
第二步:在web项目中引用此dll
第三步:在Web.Config中进行配置,type参数为:命名空间名.类名,程序集名
<httpHandlers>
<add verb="*" path="*.aspx" type="Handler,ClassLibrary1" />
</httpHandlers>
好了,现在你不论访问哪一个aspx文件,返回的都是aaa了!
HttpModules通过添加事件处理器到应用程序的事件,从而代码可以同应用程序进行交互。这些类都必须实现IHttpModule接口。Init()方法为我们提供了对一个应用程序的引用,在那个方法中我们可以绑定事件处理器到应用程序的事件上。事件处理器通过实现基本的事件处理器标记式来同应用程序进行交互。HttpModule也实现了一个Dispose()方法,它被用于在应用程序结束时执行必需的清理工作。
第一步:首先新建一个类库项目:
namespace ClassLibrary1
{
class Class2:IHttpModule
{
public void Dispose()
{
//throw new Exception("The method or operation is not implemented.");
}
public void Init(HttpApplication context)
{
context.Context.Cache["a"] = "a";
}
}
}
第二步:在Web应用程序中添加此引用
第三步:在Web.Config中进行配置,name随便起,type格式为:命名空间名.类名
<httpModules>
<add name="a" type="ClassLibrary1.Class2"/>
</httpModules>
第四步:在web应用程序中验证
if (Cache["a"] != null)
{
Response.Write(Cache["a"].ToString());
}
else
{
Response.Write("no");
}
可以看到,打印的是a
其实,HttpModule是在HttpHandler之前就响应的,所以可以影响后者。
分享到:
相关推荐
全书共分12章,主要内容包括:引言,从ASP迁移到ASP.NET,页框架,调试ASP.NET应用程序,状态控制和缓存,配置和部署,Web服务,安全,HttpHandlers和HttpModules,创建用户控件和服务器控件,使用XML以及使用ADO...
主要内容包括:引言,从ASP迁移到ASP.NET,页框架,调试ASP.NET应用程序,状态控制和缓存,配置和部署,Web服务,安全,HttpHandlers和HttpModules,创建用户控件和服务器控件,使用XML以及使用ADO.NET创建数据库...
通用的文件上传工具,包括上传进度条.文件大小显示等等,而且可直接使用.通过控件+fileupload自带控件实现普通文件上传及其超大文件上传. 请不要忘记更改web.config中的: <httpHandlers> ... </httpModules>
总结,ASP.NET体系结构是一个复杂但灵活的系统,它通过ISAPI扩展与IIS交互,利用HttpRuntime、HttpApplication、HttpModules和HttpHandlers来处理HTTP请求。理解这些概念对于深入学习ASP.NET,提升Web应用程序的性能...
当请求到达时,HttpApplication会调用一系列的HttpModules和HttpHandlers来完成具体的业务逻辑处理。 #### 十、穿过ASP.NET管道 在ASP.NET中,请求处理流程被称为“管道”。这个管道包括了一系列的事件,从请求...
3. **httpHandlers** 和 **httpModules**:这两个部分分别配置HTTP处理程序和模块,使得Elmah能够在请求生命周期中介入并捕获错误。 ```xml <httpHandlers> ,GET,HEAD" path="elmah.axd" type="Elmah....
- **httpHandlers** 和 **httpModules**:配置与上传相关的处理程序和模块。 - **appSettings**:定义上传路径和其他配置项。 #### 四、ASPX页面实现 接下来是在ASPX页面上实现上传功能的具体步骤: ```xml ...
Ajax(Asynchronous JavaScript and XML)技术自2005年以来在Web开发领域发挥了重要作用,它允许创建无需刷新整个网页就能与服务器交互的动态用户界面。本文将深入探讨如何在Visual Studio 2005中使用Ajax,以及如何...
当一个HTTP请求到达Web服务器时,它被传递给ASP.NET运行时,该运行时通过一系列模块(HttpModules)和处理器(HttpHandlers)来处理请求。HttpModules可以拦截请求并在处理之前或之后执行自定义逻辑,例如身份验证、...
### Ext.NET 安装与配置详解 #### 一、Ext.NET 概述 Ext.NET 是一组为 ASP.NET WebForms 和 MVC 架构设计的开源组件集合。它基于 Ext.js 库构建,提供了超过 100 种工具,包括 TextBox、ComboBox、Button、ToolBar...
<httpHandlers> *" path="*.myext" type="MyNamespace.MyHandler, MyAssembly"/> </httpHandlers> ``` 这个配置将注册名为"MyModule"的HttpModule和处理".myext"扩展名的HttpHandler。 总的来说,HttpModule、...
1. **MicrosoftAjax.js** 和 **MicrosoftAjax.debug.js**:这是客户端脚本库,提供了与服务器端通信的API,如UpdatePanel、ScriptManager等控件的JavaScript实现。 2. **System.Web.Extensions** 程序集:这是服务器...
在ASP.NET环境中,Web.Config是应用的核心配置文件,用于存储各种配置设置,包括连接字符串、应用程序路径、HTTP处理器(HttpHandlers)、HTTP模块(HttpModules)等。当一个项目被部署为多个虚拟目录时,每个虚拟...
2. 注册HTTP处理程序:在`<httpHandlers>`和`</httpHandlers>`之间添加: ```xml *" path="*.html" type="URLRewriter.HttpModule, URLRewriter" /> ``` 3. 注册HTTP模块:在`<httpModules>`和`</httpModules>`...
特定于单个页面的配置设置可以在节点下的<httpHandlers>和<httpModules>中进行设置。例如,元素用于添加或修改HTTP处理程序和模块,可以指定特定的请求类型由哪个类来处理。 通过使用节点,可以配置IIS服务器级别的...