說明:
雖然通過標准的方式可以創建處理程序,但是實現的步驟比較復雜,為了方便網站開發中對處理程序的應用,從Asp.net 2.0開始,asp.net提供了稱為一般處理程序的處理程序,允許我們使用比較簡單的方式定義擴展名為ashx的專用處理程序。
好處:
通常是實現IHttpHandler接口,因為不必繼承自Page類,所以沒有那么多事件需要處理,不必消耗太多資源,所以性能方面要比aspx高
使用場景:
對於asp.net網站來說,網站最覺的處理結果就是HTML網頁,生成網頁的工作通常使用擴展名為aspx的Web窗體來完成。對於處理結果不是HTML的請求,都可以通過一般處理程序完成。例如生成RSS Feed、XML、圖片等。
一般處理程序是asp.net網站中最為簡單、高效的處理程序,在處理返回類型不是HTML的請求中有着重要的作用。
代碼:
通過vs2010中新創建的一般處理程序將會生成兩個文件show.ashx和show.ashx.cs。其中show.ashx文件中的內容如下所示:
<%@ WebHandler Language="C#" CodeBehind="Show.ashx.cs" class="Web.API.Show" %>
對應的代碼文件show.ashx.cs中的內容如以下代碼所示。
using System; using System.Web; public class show:IHttpHandler{
/// <summary>
/// 如果 IHttpHandler 實例可再次使用,則為 true;否則為 false。
/// 在並發情況下,如果你當前的handle調用了某個獨占的線程(進程)(比如說,你的handle獨占寫入某個文本文件(所有的並發都需要寫入這個))那么就需要設置為false;
/// 如果你的handle沒有這種非安全的情況,就可以直接設置為true。通常大多數項目都設置為true的
/// </summary> public bool IsReusable{ get{ return false; } } public void ProcessRequest(HttpContext context){ context.Response.ContentType = "text/plain"; context.Response.Write("Hello World"); } }
