ashx介紹以及ashx文件與aspx文件之間的區(qū)別
ashx是什么文件?
.ashx 文件用于寫web handler的。.ashx文件與.aspx文件類似,可以通過它來調(diào)用HttpHandler類,它免去了普通.aspx頁面的控件解析以及頁面處理的過程。其實(shí)就是帶HTML和C#的混合文件。
.ashx文件適合產(chǎn)生供瀏覽器處理的、不需要回發(fā)處理的數(shù)據(jù)格式,例如用于生成動(dòng)態(tài)圖片、動(dòng)態(tài)文本等內(nèi)容。
ashx文件是.net 2.0新加的文件類型(其實(shí)在.net 1.0下已經(jīng)可用,但是沒有公開提供).
ashx文件和aspx文件有什么不同? 我們先新建一個(gè)ashx文件看看:
代碼示例:
當(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
看,比aspx簡潔多了吧.只有一個(gè)文件,沒有后臺(tái)cs文件(基于代碼安全考慮,后邊我們會(huì)自己添加這個(gè)文件).ashx對比aspx文件,就好像 少了cs文件.其實(shí)這就是ashx和aspx不同的地方,因?yàn)閍spx要將前后臺(tái)顯示和處理邏輯分開,所以就弄成了兩個(gè)文件,其實(shí),在最終編譯的時(shí) 候,aspx和cs還是會(huì)編譯到同一個(gè)類中去.這中間就要設(shè)計(jì)html的一些邏輯處理.而ashx不同,它只是簡單的對web http請求的直接返回你想要返回的結(jié)果.比aspx少處理了html的過程.理論上,比aspx要快.
看看.net config文件中對兩個(gè)文件類型請求的配置吧
<add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
可以看到兩個(gè)文件處理的類不一樣(ashx處理的類叫SimpleHandleFactory,既然叫Simple,應(yīng)該處理過程也比較 Simple.響應(yīng)速度也應(yīng)該快點(diǎn)吧:)
只要具體繼承了IHttpHandler如何處理的問題,我這里找到一篇早期的,介紹.net 2.0編譯模型的問題.比較深?yuàn)W,要慢慢鼓搗一下
鼓搗完了你就大概明白了ashx不過.net里面自定義好的一個(gè)請求格式,ashx文件類的文件的處理過程要比aspx要簡單得多.
相關(guān)文章
ASP.NET MVC運(yùn)行出現(xiàn)Uncaught TypeError: Cannot set property __MVC
同一相站點(diǎn),有些頁面的客戶端驗(yàn)證能工作,而有些死活不行。打開頁面就出現(xiàn)Uncaught TypeError: Cannot set property __MVC_FormValidation of null錯(cuò)誤2010-04-04
Asp.net通過SignalR2進(jìn)行實(shí)時(shí)聊天
這篇文章介紹了Asp.net通過SignalR2進(jìn)行實(shí)時(shí)聊天的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
.NET使用StackTrace獲取方法調(diào)用信息的代碼演示
StackTrace, 位于 System.Diagnostics 命名空間下,名字很直觀,它代表一個(gè)方法調(diào)用的跟蹤堆棧,里面存放著按順序排列的棧幀對象(StackFrame),每當(dāng)發(fā)生一次調(diào)用,就會(huì)壓入一個(gè)棧幀,這篇文章主要介紹了.NET使用StackTrace獲取方法調(diào)用信息,需要的朋友可以參考下2022-09-09
ASP.NET中在一般處理程序中使用session的簡單介紹
這篇文章介紹了ASP.NET中在一般處理程序中使用session,有需要的朋友可以參考一下2013-10-10
將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫)實(shí)現(xiàn)代碼
將文件以二進(jìn)制流的格式寫入數(shù)據(jù)庫:首先獲得文件路徑,然后將文件以二進(jìn)制讀出保存在一個(gè)二進(jìn)制數(shù)組中具體請祥看本文,希望對你有所幫助2013-05-05
Asp.net MVC 對所有用戶輸入的字符串字段做Trim處理的方法
這篇文章主要介紹了Asp.net MVC 如何對所有用戶輸入的字符串字段做Trim處理,需要的朋友可以參考下2017-06-06
ASP.net基礎(chǔ)知識(shí)之常見錯(cuò)誤分析
ASP.net基礎(chǔ)知識(shí)之常見錯(cuò)誤分析...2007-07-07
ASP.NET WebForms實(shí)現(xiàn)全局異常捕獲與處理的最佳實(shí)踐
文章介紹了在ASP.NET WebForms中實(shí)現(xiàn)全局異常捕獲與處理的最佳實(shí)踐,包括在Global.asax中使用Application_Error、在Web.config中配置customErrors、在代碼中使用try-catch、全局異常過濾以及使用日志記錄庫等方法,感興趣的朋友一起看看吧2025-01-01

