發布時間:2020-12-01 05:47 作者:獨孤劍 閱讀:1762
ashx文件沒有頁面元素,這點上區別于aspx頁面,所以在效率上要比aspx頁面高,通常用于ajax提交處理程序,實際項目中,用戶的每個請求需要判斷用戶是否登錄,可以是Cookie, Session,每個請求頁面中去寫判斷用戶是否登錄的方法過于麻煩,所以可以通過一個基類實現所有請求方法前的用戶登錄狀態判斷。應用基類的好處可以將一些基本驗證,公用方法,函數統一處理。
BaseHandle.ashx
/// <summary> /// 基類 /// ashx中如果要使用Session需要繼承 IRequiresSessionState 接口 /// </summary> public class BaseHandler : IHttpHandler, IRequiresSessionState { /// <summary> /// 請求處理 /// </summary> /// <param name="context"></param> public void ProcessRequest(HttpContext context) { // 邏輯驗證, 如: 用戶登錄驗證 // ... // ... // ... if (1 == 0) { context.Response.ContentType = "text/plain"; context.Response.Write("error"); return; } context.Response.ContentType = "text/plain"; context.Response.Write("BaseHandler"); AjaxRequest(context); } /// <summary> /// ajax請求, 繼承頁面進行請求調用 /// </summary> /// <param name="context"></param> public virtual void AjaxRequest(HttpContext context) { } public bool IsReusable { get { return false; } } }
繼承頁面,Test.ashx
public class Test : BaseHandler { public override void AjaxRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write("Test"); // 業務邏輯 // ... // ... // ... } }
微信打賞, 微信掃一掃
支付寶打賞, 支付寶掃一掃
如果文章對您有幫助,歡迎給作者打賞