httphandlers 与 httpmodules
?
??? 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之前就響應的,所以可以影響后者。
轉載于:https://www.cnblogs.com/hanwater/archive/2010/04/02/1702820.html
總結
以上是生活随笔為你收集整理的httphandlers 与 httpmodules的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windo.open 全攻略
- 下一篇: 整理:关于聚簇索引和非聚簇索引的区别