18

我对 GenericHandler 和anonymousIdentification 有疑问。

基本上,如果<anonymousIdentification enabled="true" />在 web 配置中打开,每当将 JQuery GET/POST 请求发送到服务器时,该请求都会在新用户和新用户会话下执行。

有没有办法减轻这种情况?我需要访问当前用户的会话变量……真是令人沮丧!

4

4 回答 4

41

通用处理程序必须实现IReadOnlySessionState访问会话变量的接口。如果您还需要编写会话变量,请实现IRequiresSessionState.

于 2011-02-03T17:58:42.863 回答
13

实现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");      
  }

}
于 2012-09-19T12:23:42.090 回答
3

你可以使用这个:

public class Handler : 
    IHttpHandler, 
    System.Web.SessionState.IReadOnlySessionState
于 2012-06-20T01:32:55.623 回答
-1

我建议您在网络浏览器中启用开发人员模式下的网络选项卡。然后在 AJAX 中检查发送了哪个 cookie(如果有)。

如果您没有看到任何 cookie,则意味着浏览器没有获得任何会话,因此您应该确保(如 Josh 所述)继承正确的接口并访问 cookie。(不要忘记使用 System.Web.SessionState)

要生成 cookie,请访问会话对象的 sessionID:

string sesId = context.Session.SessionID;

您向响应写入任何内容之前。

于 2011-11-29T12:00:52.163 回答