.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的好處在與不用多一個html 注意了VS2005中Web應(yīng)用程序項目模板里的Generic Handler 項,發(fā)現(xiàn)它是一個.ashx文件,實際上它是一個HttpHandler。后來查了一下.Net SDK文檔,發(fā)現(xiàn)Asp.Net1.1也支持.ashx,但是沒有給出詳細(xì)內(nèi)容。 我們都知道,HttpHandler是一個徹底自定義Http請求的方法,它通過web.config來定義Asp.Net運(yùn)行時來過濾出要自定義的Http請求,發(fā)送到定義在web.config的指定類中。 利用.ashx文件是一個更好的方法,這個文件類似于.aspx文件,可以通過它來調(diào)用HttpHandler類,從而免去了普通.aspx頁面的控件解析以及頁面處理的過程。這個文件特別適合于生成動態(tài)圖片,生成動態(tài)文本等內(nèi)容。 建立方法如下: 首先打開一個Web項目,然后在任意目錄下使用VS2003解決方案資源管理器的“添加”-->“添加新項”,在對話框中選擇“文本文件”,然后在文件名處輸入“TextBuilder.ashx”。 然后在同目錄下,使用解決方案資源管理器,使用“添加”-->“添加類”,在類文件名處輸入“TextBuilder.ashx.cs”??梢钥闯?,它的文件命名規(guī)律與.aspx文件相同。 然后在.cs文件處輸入以下代碼(名稱空間略): ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 然后在“TextBuilder.ashx”文件的第一行處輸入上面這個類的調(diào)用代碼: ![]() 最后保存并編譯項目。 使用IE測試,輸入這個.ashx的地址即可。 大家可以看出Response類有個OutputStream方法,可以向客戶端輸出二進(jìn)制數(shù)據(jù)流,所以在我的項目中,使用這個方法,在一個.ashx中使用DundasChart控件就可以生成非常好的統(tǒng)計圖,用它發(fā)送二進(jìn)制數(shù)據(jù),方便快捷,而且不需在web.config內(nèi)輸入任何配置代碼。 .ashx文件有個缺點,他處理控件的回發(fā)事件非常麻煩,比如說如果用它來生成DataGrid的列表也不是不行,但是處理數(shù)據(jù)的回發(fā),需要一些.aspx頁的功能,只有自己手動處理這些功能。所以,一般使用.ashx,用來輸出一些不需要回發(fā)處理的項目即可。 利用“一般處理程序”。如果你實用的是vs2005你在添加新項中可以見到“一般處理程序”,它的后綴名為.ashx。它是什么?其實它和.aspx很類似。先問問.aspx是如何工作的?也許你知道,.aspx能處理來自外部傳入的請求,然后它還能處理這個請求并生成一個html作為結(jié)果返回。這是典型的處理外部請求的方式。.aspx就是專門為處理“典型”的請求而出現(xiàn)的。那么如果我們現(xiàn)在需要一種又能處理外部請求又需要我們自定義的處理這個請求那又要怎么做呢?(也就是不實用“典型”的方式來處理)。.ashx就能幫你做到這一點。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
它一般用于產(chǎn)生供瀏覽器處理的、不需要回發(fā)處理的數(shù)據(jù)格式,例如用于生成動態(tài)圖片、動態(tài)文本、ajax檢測用戶名是否可用(ajax其實都適合)等內(nèi)容。 .ashx初建會有起始代碼,其中ContentType用于設(shè)置程序的輸出類型,這段代碼可以在頁面上出處一段文本“Hello World”其次ashx文件是可以直接訪問的。 |
|
來自: 悟靜 > 《.net和asp.net》