小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ASP.NET ASHX 一般處理程序教程 (轉(zhuǎn)載)

 zww_blog 2014-07-16

你不想創(chuàng)建一個(gè)普通ASP.NET的Web窗體頁(yè)。而又要通過一個(gè)查詢字符串返回一個(gè)動(dòng)態(tài)的圖片、XML或者非HTML網(wǎng)頁(yè)。這是一個(gè)用C#編程語(yǔ)言編寫的使用ASHX(一般處理程序)的簡(jiǎn)單教程。

 

簡(jiǎn)介

首先,我們來(lái)回顧一下使用ASHX文件的目的。也許我們想在URL中使用這個(gè)ASHX文件動(dòng)態(tài)的返回?cái)?shù)據(jù)內(nèi)容。我們使用的URL查詢字符串如下:http://www./?file=name.

入門:怎么添加一個(gè)ASHX文件呢?

打開你的ASP.NET網(wǎng)站,在網(wǎng)站上點(diǎn)擊"添加新項(xiàng)"的菜單,此時(shí)打開了"添加新項(xiàng)"窗口,選擇一般處理程序(Generic Handler),這時(shí)你將看到一個(gè)有一些代碼的Handler.ashx文件。

自動(dòng)生成的代碼

我們注意到在ASHX文件中自動(dòng)生成的代碼,定義了IHttpHandler接口的2個(gè)方法。最重要的方法是ProcessRequest(),無(wú)論是請(qǐng)求還是輸出,這個(gè)方法都會(huì)被調(diào)用到。你不應(yīng)該修改任何默認(rèn)繼承的接口成員。

URL映射

通常,使用一個(gè)新的URL替代舊的URL或者路徑是可行的。為了向后兼容和搜索引擎優(yōu)化,在你的網(wǎng)站上,你也許想用新的處理程序代替一個(gè)舊的URL地址。用URL映射可以解決此問題。當(dāng)然,你也可以用更復(fù)雜的路徑重寫方法。

Web.config中的部分代碼

<system.web>

<urlMappings enabled="true">

<add url="~/Default.aspx" mappedUrl="~/Handler.ashx"/>

</urlMappings>

……..

</system.web>

以上代碼將自動(dòng)將一個(gè)連接轉(zhuǎn)到另一個(gè)上面。當(dāng)Default.aspx頁(yè)面被請(qǐng)求時(shí),Handler.ashx文件將取而代之。這意味著:你的目錄默認(rèn)頁(yè)面將自動(dòng)導(dǎo)航到一般處理程序上。

添加示例圖片

在這里,你也許會(huì)用ASHX文件處理圖片文件。在桌面或者網(wǎng)絡(luò)上找一會(huì)你最喜歡的圖片,把它添加到你的項(xiàng)目中。例如,我選擇的圖片是"Flower1.png",下面我將在ASHX文件中使用這個(gè)圖片。

修改Handler.ASHX文件

你的Handler有2個(gè)方法,我們必須修改ProcessRequest()方法,可以修改文件的ContentType和輸出內(nèi)容。通過下面類似的代碼可以修改你的圖片文件名和ContentType屬性。

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "image/png";

context.Response.WriteFile("~/images/ Flower1.png");

}

 

public bool IsReusable

{

get

{

return false;

}

}

測(cè)試處理程序

在本地測(cè)試ASHX文件。點(diǎn)擊網(wǎng)站綠色的運(yùn)行按鈕。你將在瀏覽器上看到你的圖片文件。這是處理程序中輸出的圖片返回結(jié)果。

添加功能

到目前位置,上面的例子是沒有任何作用的。主要就是讓我們通過ASHX處理一個(gè)圖片文件。你可以在ASHX文件添加任何邏輯代碼或者邏輯引用。開發(fā)者通常需要使用請(qǐng)求的查詢字符串集合。你可以像在ASPX文件中使用的方法一樣請(qǐng)求查詢字符串:Request.QueryString["file"]。

 

上面的代碼通過基于查詢字符串集合,收到請(qǐng)求然后返回不同的圖片文件。他將通過查詢字符串返回二個(gè)圖片中的一個(gè)。

例如:

URL = http://www./?file=logo

    File query string: logo

File written: Logo1.png

URL = http://www./?file=flower

File query string: flower

File written: Flower1.png

測(cè)試查詢字符串

做了這么多準(zhǔn)備工作。開始測(cè)試吧!打開你的瀏覽器,在URL路徑上添加上面的查詢字符串。你會(huì)看到ASP.NET由Default.aspx頁(yè)面導(dǎo)航到Handler.ashx頁(yè)面。并且,他將通過獲取查詢變量返回適當(dāng)?shù)奈募?/span>

用途

這些代碼可以用作訪問者數(shù)量的計(jì)數(shù)器或者日志推薦的數(shù)量計(jì)數(shù)器。由于瀏覽器和Bot的區(qū)別,這將比服務(wù)器日志提供更準(zhǔn)確的訪問數(shù)量。

性能

你也許想知道,使用ASHX文件,是否會(huì)帶來(lái)一些性能的優(yōu)勢(shì)或改變呢?ASHX文件并不復(fù)雜,而且不涉及更多事件的調(diào)用。正如你想象的那樣,一個(gè)請(qǐng)求處理10幾個(gè)事件比處理一個(gè)事件將消耗更多的性能。所以,在可能的情況下使用ASHX文件吧,他將會(huì)帶來(lái)一些性能的優(yōu)勢(shì)。

選擇處理程序

那什么時(shí)候用客戶端處理程序,什么時(shí)候使用Web窗體文件呢?一般處理程序在處理二進(jìn)制數(shù)據(jù)更有優(yōu)勢(shì),而Web窗體在做快速開發(fā)方面更好

 

控制樹

在ASP.NET框架中,Web窗體使用一種稱為控制樹的概念(網(wǎng)頁(yè)都保存在一個(gè)對(duì)象模型中)。當(dāng)你不需要客戶端的控制樹或者整個(gè)網(wǎng)站架構(gòu)的時(shí)候,使用一般處理程序,這將會(huì)帶來(lái)更好的性能優(yōu)勢(shì)和簡(jiǎn)單的代碼調(diào)試。

 

IsReusable 屬性

我不知道IsReusable屬性在ASP.NET中的作用。通過閱讀表名,他能在不破壞反復(fù)程序處理的情況下提高性能、減少內(nèi)存壓力。

 

總結(jié)

在這篇文章中,教給你怎么在自己的網(wǎng)站中使用ASHX自定義處理程序。通過修改后,能填充到更多重要的網(wǎng)站中。結(jié)合自定義查詢字符串的URL映射,可以大大簡(jiǎn)化和優(yōu)化你的網(wǎng)站后臺(tái)代碼。


附加:


做好一個(gè).aspx頁(yè)面。

 

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www./1999/xhtml">  
  5. <head runat="server">  
  6.     <title></title>  
  7. </head>  
  8. <body>  
  9.     <form id="form1" runat="server">  
  10.     <div>  
  11.         <div>  
  12.             <img id="img" src="images/1.jpg" height="300px" />  
  13.         </div>  
  14.         <a href="#" onclick="GetImg(1)">1</a>   
  15.         <a href="#" onclick="GetImg(2)">2</a>   
  16.         <a href="#" onclick="GetImg(3)">3</a>  
  17.     </div>  
  18.     </form>  
  19. </body>  
  20. </html>  
  21.   
  22. <script type="text/javascript">  
  23.     function GetImg(index) {  
  24.         var myImg = document.getElementById('img');  
  25.         myImg.src = './imageHandle.ashx?id=' + index;  
  26.     }  
  27. </script>  


這個(gè)例子是這樣的,有三個(gè)鏈接,分別為1、2、3,點(diǎn)擊后顯示對(duì)應(yīng)的圖片。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多