在asp.net handler 中 使用 session

SieSteven發表於2016-01-13

首先 handler 預設情況下是不支援 session 的。如果想在一般處理程式(handler)中使用session ,需要實現一個不需要實現任何方法的介面IRequiresSessionState

引入 System.Web.SessionState 即可。此時需要context.Session["pars"]這樣引用。具體例項如下圖所示:


下面是網友的文章:

參考文章1

原文連結


抽象類

  1. using System;  
  2. using System.Web;  
  3. using System.Web.SessionState;  
  4. ....  
  5.   
  6. namespace SRERC.Web.admin  
  7. {  
  8.     /// <summary>  
  9.     /// SessionAwareHandler 的摘要說明  
  10.     /// </summary>  
  11.     public abstract class SessionAwareHandler : IHttpHandler, IRequiresSessionState  
  12.     {  
  13.            
  14.          .....  
  15.   
  16.         public void ProcessRequest(HttpContext context)  
  17.         {  
  18.             context.Response.ContentType = "text/plain";  
  19.               
  20.             // 身份認證  
  21.               
  22.             // 許可權控制  
  23.   
  24.             MyProcess(context);  
  25.   
  26.         }  
  27.   
  28.        ........  
  29.   
  30.   
  31.       protected abstract void MyProcess(HttpContext context);  
  32.   
  33.      }  
  34. }  

一般處理程式實現類:

  1. using System;  
  2. using System.Web;  
  3.   
  4. namespace SRERC.Web.admin  
  5. {  
  6.     /// <summary>  
  7.     /// bandHandler 的摘要說明  
  8.     /// </summary>  
  9.     public class bandHandler : SessionAwareHandler  
  10.     {  
  11.         protected override void MyProcess(HttpContext context)  
  12.         {  
  13.              //....處理過程  
  14.          //....  
  15.              context.Response.Write(json);  
  16.     
  17.         }  
  18.   
  19.     }  
  20. }  
參考文章2  stackoverflow

原文連結

原文中採納的回復就是正解

Implement the System.Web.SessionState.IRequiresSessionState interface

public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{   
  public void ProcessRequest(HttpContext context)  
  {      
    context.Session["StackOverflow"] = "overflowing";      
    context.Response.Redirect("~/AnotherPage.aspx");      
  }

}
OK,能在handler中使用session了。但是不知道是否符合規矩






相關文章