ASP.NET:如何从处理程序访问Session?

Ian*_*oyd 47 asp.net session session-state handler ihttphandler

我正在尝试一些值存储在会话处理程序页面,我做一个重定向到一个页面的WebForms,这将拿起之前会话值和预填的WebForm:

public class Handler : IHttpHandler
{
   public void ProcessRequest(HttpContext context)
   {
      ...
      context.Session["StackOverflow"] = "overflowing";
      context.Response.Redirect("~/AnotherPage.aspx");
      ...
   }
   ...
 }
Run Code Online (Sandbox Code Playgroud)

除了context.Sessionobject是null.

如何从处理程序访问会话状态?

Jos*_*rke 107

实现System.Web.SessionState.IRequiresSessionState接口

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

}
Run Code Online (Sandbox Code Playgroud)

  • 是的,它仍在实现接口,但由于它是一个标记接口,因此除了接口的派生之外,我们不需要编写任何代码. (3认同)

Tim*_*han 10

实行 IRequiresSessionState


Amy*_*Amy 7

实现iRequiresSessionState是否解决了这个问题?

那么改为使用IHttpModule并覆盖BeginRequest呢?

    public void Init(HttpApplication application)
    {
        application.BeginRequest += new EventHandler(context_BeginRequest);
    }
Run Code Online (Sandbox Code Playgroud)

  • 我面临同样的问题我在我的处理程序代码中使用了iRequiresSessionState但仍然无法访问会话值.会话密钥仍为0.任何人都可以告诉我这个吗? (2认同)