在上一篇博客中,提到一般處理程序真的不一般。這篇博客主要是給大家解惑。由於最近在做項目的過程中,用到了很多的一般處理程序,相信你也一定用到過,但是你真的了解它嗎?
一般處理程序的一般是相對於aspx頁面來說的,它介於請求與響應之間的處理程序。說白了就是去掉了前台appx HTML 頁面的cs部分,什麼請求都可以處理,實現IHttpHandler接口。
通過VS2012中創建一個一般處理程序將會生成兩個後綴名的文件.ashx和.ashx.cs。其中.ashx.cs對應的內容,如以下代碼:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace web { /// <summary> /// Handler 的摘要說明 /// </summary> public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Hello World"); } public bool IsReusable { get { return false; } } } }
從上面的代碼可以看到,一般處理程序實際上就是一個實現IHttpHandler接口的處理程序類,這個處理程序被ASP.NET直接在系統配置文件映射到了ashx擴展名的請求上。這樣,我們就不需要在配置文件中進行配置了。
因為不必繼承Page類,所以沒有那麼多的事件要處理,消耗資源少,性能比aspx高。
一般處理程序可以完成的功能很多,輸出HTML,效果跟aspx+cs是一樣的,還可以用來發送非html類或無需html代碼的數據等,比如文本、XML、圖片,甚至二進制文件格式,還有最常用json數據格式等。
簡單的舉三個最常用的例子:
1、圖片過濾(防盜鏈)
2、圖片驗證碼
3、處理自定義後綴名請求
這個三個例子的代碼,我通過轉載的博客,為大家做一個詳細的介紹。
以往我們都是從功能的角度來學習和思考某個頁面怎樣用,隨著不斷學習的深入,我更加的認為應該從原理和本質認識和學習,從上面轉載的博客為大家解決這個問題。