ASP.NET運行機制之一般處理常式(ashx)

來源:互聯網
上載者:User

一. 概述

 

   建立一個ashx檔案  代碼如下

<%@ WebHandler Language="C#" Class="TestHandler" %>using System;using System.Web;public class TestHandler : IHttpHandler {    //dd    public void ProcessRequest (HttpContext context) {        context.Response.ContentType = "text/plain";        context.Response.Write("Hello World");    }    //dd    public bool IsReusable {        get {            return false;        }    }}

 

二. 解析

 

   1).

<%@ WebHandler Language="C#" Class="TestHandler" %>

 

     @WebHandler為ASP.NET頁面的一個指令 指定為Http handler檔案(.ashx)定義屬性(Attribute)和編譯選項

       屬性

            Class 指定一個繼承自IHttpHandler的類,當handler被請求時將被執行個體化用來響應請求。這個屬性是必須的

            CodeBehind 指定Class對應的檔案,基本上沒用,主要是用來支援VS顯示的,可以去掉。

 
      編譯選項

           Debug 預設是false,所以非調試就不用開啟,影響效能,可以省略

           Description 關於當前handler的描述,ASP.NET解析時忽略,可能調試時能提供輔助資訊,可以省略

           Language 預設C# ,可以省略

           WarningLevel 0-4 有預設值,可以省略。

   2).

 

        接下來是底下建立的類

                    實現了一個關鍵的介面:System.Web.IHttpHandler。實現它表明將以何種方式來處理來自外部的請求。

                             參數context是System.Web.HttpContext類型

                             context對象提供對用於為 HTTP 要求提供服務的內部伺服器對象(如 Request、Response、

                                         Session 和 Server)的引用,也即可以訪問我們的幾大伺服器對象。

                              可以在ProcessRequest方法中編寫如何處理請求的細節

<%@ WebHandler Language="C#" Class="ImageHandler" %>using System;using System.Web;/// <summary>/// 這就一個沒有任何實現的一般處理常式。/// </summary>public class ImageHandler : IHttpHandler {        public void ProcessRequest (HttpContext context)    {        //擷取虛擬目錄的實體路徑。         string path = context.Server.MapPath("");        //擷取圖片檔案的位元據。        byte[] datas = System.IO.File.ReadAllBytes(path +     http://www.cnblogs.com/dongpo888/admin/file:////123.jpg);       //將位元據寫入到輸出資料流中。        context.Response.OutputStream.Write(datas, 0, datas.Length);    }     public bool IsReusable     {        get {            return false;             }    }}

 

                          而IsReusable表明其它的請求是否可以使用這個類的一個執行個體。

 

 

使用ashx的好處就是不需要在Web.Config中配置,就可以直接用IHttpHandler衍生類別來處理請求。

常見的應用情境:動態產生圖片(比如驗證碼),響應Ajax請求等。

 

三. aspx、ascx和ashx

     可參考如下部落格

      點選連結

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.