国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
再續(xù).ashx
.ashx 文件用于寫web handler的。當(dāng)然你完全可以用.aspx 的文件后綴。使用.ashx 可以讓你專注于編程而不用管相關(guān)的WEB技術(shù)。.ashx必須包含IsReusable. 如下例所示


<% @ webhandler language="C#" class="AverageHandler" %>

using System;
using System.Web;

public class AverageHandler : IHttpHandler
{
public bool IsReusable
{ get { return true; } }
public void ProcessRequest(HttpContext ctx)
{
ctx.Response.Write("hello");
}
}
.ashx比.aspx的好處在與不用多一個(gè)html   
注意了VS2005中Web應(yīng)用程序項(xiàng)目模板里的Generic Handler 項(xiàng),發(fā)現(xiàn)它是一個(gè).ashx文件,實(shí)際上它是一個(gè)HttpHandler。后來查了一下.Net SDK文檔,發(fā)現(xiàn)Asp.Net1.1也支持.ashx,但是沒有給出詳細(xì)內(nèi)容。

我們都知道,HttpHandler是一個(gè)徹底自定義Http請(qǐng)求的方法,它通過web.config來定義Asp.Net運(yùn)行時(shí)來過濾出要自定義的Http請(qǐng)求,發(fā)送到定義在web.config的指定類中。

利用.ashx文件是一個(gè)更好的方法,這個(gè)文件類似于.aspx文件,可以通過它來調(diào)用HttpHandler類,從而免去了普通.aspx頁(yè)面的控件解析以及頁(yè)面處理的過程。這個(gè)文件特別適合于生成動(dòng)態(tài)圖片,生成動(dòng)態(tài)文本等內(nèi)容。

建立方法如下:
首先打開一個(gè)Web項(xiàng)目,然后在任意目錄下使用VS2003解決方案資源管理器的“添加”-->“添加新項(xiàng)”,在對(duì)話框中選擇“文本文件”,然后在文件名處輸入“TextBuilder.ashx”。

然后在同目錄下,使用解決方案資源管理器,使用“添加”-->“添加類”,在類文件名處輸入“TextBuilder.ashx.cs”。可以看出,它的文件命名規(guī)律與.aspx文件相同。

然后在.cs文件處輸入以下代碼(名稱空間略):
using System.Web
public sealed class TextBuilder : IHttpHandler
{
    
public void ProcessRequest(HttpContext context)
    
{
         context.Response.ClearContent();
         context.Response.ContentType
= "text/plain";
         context.Response.Write(
"Hello World");
         context.Response.End();
     }


    
public bool IsReusable
    
{
        
get { return true; }
     }

}

然后在“TextBuilder.ashx”文件的第一行處輸入上面這個(gè)類的調(diào)用代碼:
<%@ WebHandler language="C#" Class="MyNamespace.TextBuilder" codebehind="TextBuilder.ashx.cs" %>
上面的代碼需要注意的是:必須在Class項(xiàng)中輸入類的完整名稱,即包括名稱空間及類名稱。

最后保存并編譯項(xiàng)目。

使用IE測(cè)試,輸入這個(gè).ashx的地址即可。

大家可以看出Response類有個(gè)OutputStream方法,可以向客戶端輸出二進(jìn)制數(shù)據(jù)流,所以在我的項(xiàng)目中,使用這個(gè)方法,在一個(gè).ashx中使用DundasChart控件就可以生成非常好的統(tǒng)計(jì)圖,用它發(fā)送二進(jìn)制數(shù)據(jù),方便快捷,而且不需在web.config內(nèi)輸入任何配置代碼。

.ashx文件有個(gè)缺點(diǎn),他處理控件的回發(fā)事件非常麻煩,比如說如果用它來生成DataGrid的列表也不是不行,但是處理數(shù)據(jù)的回發(fā),需要一些.aspx頁(yè)的功能,只有自己手動(dòng)處理這些功能。所以,一般使用.ashx,用來輸出一些不需要回發(fā)處理的項(xiàng)目即可。

利用“一般處理程序”。如果你實(shí)用的是vs2005你在添加新項(xiàng)中可以見到“一般處理程序”,它的后綴名為.ashx。它是什么?其實(shí)它和.aspx很類似。先問問.aspx是如何工作的?也許你知道,.aspx能處理來自外部傳入的請(qǐng)求,然后它還能處理這個(gè)請(qǐng)求并生成一個(gè)html作為結(jié)果返回。這是典型的處理外部請(qǐng)求的方式。.aspx就是專門為處理“典型”的請(qǐng)求而出現(xiàn)的。那么如果我們現(xiàn)在需要一種又能處理外部請(qǐng)求又需要我們自定義的處理這個(gè)請(qǐng)求那又要怎么做呢?(也就是不實(shí)用“典型”的方式來處理)。.ashx就能幫你做到這一點(diǎn)。

首先你發(fā)現(xiàn) <%@ WebHandler Language="C#" Class="ImageHandler" %>這句話。想想一個(gè)ASP.NET的頁(yè)面是不是也有類似的東西。其實(shí)它表明了現(xiàn)在的這個(gè)文件可以處理一個(gè)來自外部的請(qǐng)求。當(dāng)然就它是不行的。
接下來關(guān)鍵的東西就是底下建立的類,它實(shí)現(xiàn)了一個(gè)關(guān)鍵的接口:IHttpHandler。實(shí)現(xiàn)這個(gè)接口表明你現(xiàn)在將以何種方式來處理來自外部的請(qǐng)求。其中有一個(gè)方法和屬性需要實(shí)現(xiàn),你可以在ProcessRequest方法中編寫如何處理請(qǐng)求的細(xì)節(jié)而IsReusable表明其它的請(qǐng)求是否可以使用這個(gè)類的一個(gè)實(shí)例。我們可以暫時(shí)忽略IsReusable屬性。將焦點(diǎn)轉(zhuǎn)到ProcessRequest方法上。在ProcessRequest中有一個(gè)參數(shù)context它是一個(gè)HttpContext類型,context對(duì)象提供對(duì)用于為 HTTP 請(qǐng)求提供服務(wù)的內(nèi)部服務(wù)器對(duì)象(如 Request、Response、Session 和 Server)的引用。也就是可以訪問我們的幾大服務(wù)器對(duì)象。
現(xiàn)在來看個(gè)簡(jiǎn)單的例子。
請(qǐng)?jiān)谀阕约航⒌腤EB站點(diǎn)文件夾中隨便放一個(gè)圖片。我的想法是這樣,我先將一個(gè)圖片讀取成一個(gè)二進(jìn)制的數(shù)據(jù)然后在將這個(gè)二進(jìn)制的數(shù)據(jù)轉(zhuǎn)變成一個(gè)圖片。這其中需要你建立兩個(gè)文件。一個(gè).ASPX文件和現(xiàn)在我們要實(shí)用的.ASHX文件。

文件ImageHandler.ashx

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

using System;
using System.Web;
/// <summary>
/// 這就一個(gè)沒有任何實(shí)現(xiàn)的一般處理程序。
/// </summary>

public class ImageHandler : IHttpHandler {

public void ProcessRequest (HttpContext context)
{
//獲取虛擬目錄的物理路徑。
string path = context.Server.MapPath("");
//獲取圖片文件的二進(jìn)制數(shù)據(jù)。
byte[] datas = System.IO.File.ReadAllBytes(path + "\\U1513.jpg");
//將二進(jìn)制數(shù)據(jù)寫入到輸出流中。
context.Response.OutputStream.Write(datas, 0, datas.Length);
}


public bool IsReusable {
get {
return false;
}

}


}


default.aspx文件
注意上面的代碼:<asp:Image ID="Image1" runat="server" ImageUrl="~/ImageHandler.ashx"/></div> 中ImageUrl指向的是ImageHandler.ashx文件。

它一般用于產(chǎn)生供瀏覽器處理的、不需要回發(fā)處理的數(shù)據(jù)格式,例如用于生成動(dòng)態(tài)圖片、動(dòng)態(tài)文本、ajax檢測(cè)用戶名是否可用(ajax其實(shí)都適合)等內(nèi)容。

.ashx初建會(huì)有起始代碼,其中ContentType用于設(shè)置程序的輸出類型,這段代碼可以在頁(yè)面上出處一段文本“Hello World”其次ashx文件是可以直接訪問的。
注意:
實(shí)現(xiàn)HttpHandler得功能就必須實(shí)現(xiàn)IHttpHandler接口,而且,任何實(shí)現(xiàn)了該接口的類都可以用于處理輸入的HTTP請(qǐng)求。
從上面的代碼我們可以看到,實(shí)現(xiàn)該接口需要實(shí)現(xiàn)IsReusable屬性和ProcessRequest方法。IsReusable可以用來設(shè)置是否可以重用此實(shí)例。
ProcessRequest方法是整個(gè)HTTP請(qǐng)求最終的處理方法。就是該文件的程序入口點(diǎn),你可以在這個(gè)函數(shù)里面處理請(qǐng)求內(nèi)容,并返回以及其他邏輯。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一般處理程序
IHttpHandler接口 - HeroBeast - 博客園
ASP.NET ASHX 一般處理程序教程 (轉(zhuǎn)載)
ASP.NET的SEO:使用.ashx文件——排除重復(fù)內(nèi)容
使用.ashx文件處理IHttpHandler實(shí)現(xiàn)發(fā)送文本及二進(jìn)制數(shù)據(jù)的方法
關(guān)于asp.net中*.ashx類型的文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服