日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用 IHttpHandler 自定义 HTTP 处理程序

發布時間:2024/4/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用 IHttpHandler 自定义 HTTP 处理程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文內容

  • 引入
  • IHttpHandler 概述
  • 演示創建自定義 HTTP 處理程序
  • ??? 創建自定義 HTTP 處理程序
  • ??? 映射文件擴展名
  • ??? 測試自定義 HTTP 處理程序
  • 參考資料

?

引入

當新建一個名為 WebForm1 的 .aspx 文件后,這個頁面相應的 .aspx.cs 文件內容如下:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; ? namespace HttpHandlerDemo { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ? } } }

任何人對這個頁面再熟悉不過。但更進一步,這個后臺文件繼承 System.Web.UI.Page 類,而該類又繼承 System.Web.UI.TemplateControl 類和 System.Web.IHttpHandler 接口。值得注意的是 IHttpHandler。

?

本文在 VS 2008 和 IIS 6 環境下概述如何利用 IHttpHandler 自定義 HTTP 處理程序。

本文重在工程實踐,以實踐看理論,這多少符合點參加工作的人實際情況。我是比較討厭大段大段的文字描述和理論的。雖然寫得簡單,但若深究下去涉及的問題實在很多,隨便寫點什么,都可以成為專門的主題。

在網上或是群里看到太多人問得問題,一是自己不思考,稍微遇到點問題,就迫切尋求他人幫助;二是基礎太差,知識量不夠,或是知道的過于膚淺。這些都是阻礙自己進步的巨大障礙。

在本文的描述中,希望能體會、意識到 IHttpHandler 能做什么、能為你的項目做什么。

學習的過程不能一蹴而就,起初你只是知道一個個信息點,一個個實現方式,但若堅持下去,認真思考它們內在的東西,最終這些信息在你腦中會形成一個體系。

?

IHttpHandler 概述

IHttpHandler 是 ASP.NET 提供一個底層的請求/響應 API,使開發人員可以利用 .NET Framework 為到來的 HTTP 請求服務。因此,你可以創建自己的 HTTP 處理程序,將自定義輸出呈現給瀏覽器。

ASP.NET HTTP 處理程序是響應對 Web 應用程序的請求而運行的過程。最常見的處理程序是處理 .aspx 文件的 ASP.NET 頁處理程序。用戶請求 .aspx 文件時,頁面通過頁處理程序來處理請求。

自定義 HTTP 處理程序通常具有以下用途:

  • RSS 源。若要為網站創建 RSS 源,可以創建一個可發出 RSS 格式 XML 處理程序。然后將文件擴展名,如 .rss,綁定你自定義的處理程序。當用戶向站點發送以 .rss 結尾的請求時,ASP.NET 將調用你自定義的處理程序來處理該請求。
  • 圖像服務器。如果希望 Web 應用程序能夠提供不同大小的圖像,可以編寫一個自定義處理程序來調整圖像大小,將調整后的圖像作為處理程序的響應發送給用戶。

除了 ASP.NET 頁面處理程序外,ASP.NET 還有其他幾種內置的處理程序。如下表所示:

處理程序說明
ASP.NET 頁處理程序 (*.aspx)用于所有 ASP.NET 頁的默認 HTTP 處理程序。
Web 服務處理程序 (*.asmx)在 ASP.NET 中作為 .asmx 文件創建的 Web 服務頁的默認 HTTP 處理程序。
泛型 Web 處理程序 (*.ashx)不含 UI 和包括 @ WebHandler 指令的所有 Web 處理程序的默認 HTTP 處理程序。
跟蹤處理程序 (trace.axd)顯示當前頁跟蹤信息的處理程序。

?

演示創建自定義 HTTP 處理程序

創建自定義 HTTP 處理程序

若要創建自定義 HTTP 處理程序,需要創建實現 IHttpHandler 接口的類。這是一個同步處理程序(實現 IHttpAsyncHandler 可以創建一個異步處理程序,兩種處理程序接口都要求您實現 IsReusable 屬性和 ProcessRequest 方法)。

  • IsReusable 屬性指定 IHttpHandlerFactory 對象(實際調用適當處理程序的對象)是否可以將處理程序放置在池中,并且重新使用它以提高性能。如果處理程序不能放在池中,則在每次需要處理程序時工廠都必須創建處理程序的新實例。
  • ProcessRequest 方法負責處理單個 HTTP 請求。

HTTP 處理程序有權訪問應用程序上下文。其中包括請求用戶的標識(如果已知)、應用程序狀態和會話信息。當請求 HTTP 處理程序時,ASP.NET 將調用相應處理程序的 ProcessRequest 方法。您在處理程序的 ProcessRequest 方法中編寫的代碼將創建一個響應,此響應隨后發送回請求瀏覽器。

如下所示創建一個名為 HelloWorldHandler 的處理程序:

using System; using System.Web; ? namespace HttpHandlerDemo { public class HelloWorldHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { HttpRequest Request = context.Request; HttpResponse Response = context.Response; Response.Write("<html>"); Response.Write("<body>"); Response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>"); Response.Write("</body>"); Response.Write("</html>"); } ? public bool IsReusable { get { return true; } } } }
映射文件擴展名

HelloWorldHandler 處理程序可以響應尚未在 IIS 和 ASP.NET 中映射的任何文件擴展名。

為了使 ASP.NET 了解為你的自定義文件擴展名使用哪個處理程序,在 IIS 中必須將該擴展名映射到 ASP.NET。然后在應用程序中必須將該擴展名映射到自定義處理程序。

如下所示:

<httpHandlers> <add verb="*" path="*.sample" type="HttpHandlerDemo.HelloWorldHandler"/> </httpHandlers>

測試自定義 HTTP 處理程序

這樣,當你輸入 http://localhost/mytest.sample,任何以 .sample 結尾的請求時,都會調用 HelloWorldHandler 處理程序。

運行結果:

?

參考資料

MSDN HTTP 處理程序和 HTTP 模塊概述 http://msdn.microsoft.com/zh-cn/library/bb398986(v=VS.90).aspx

.NET Framework IHttpHandler http://msdn.microsoft.com/zh-cn/library/system.web.ihttphandler(v=VS.90).aspx

?

下載 Demo

轉載于:https://www.cnblogs.com/liuning8023/archive/2011/11/29/2268445.html

總結

以上是生活随笔為你收集整理的利用 IHttpHandler 自定义 HTTP 处理程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。