ASP.NET通用处理程序和会话

我有GenericHandler和anonymousIdentification的问题。

基本上,如果在Web配置中打开 ,则每当向服务器发送JQuery GET / POST请求时,该请求将在新用户和新用户会话下执行。

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

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

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

你可以用这个:

 public class Handler : IHttpHandler, System.Web.SessionState.IReadOnlySessionState 

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

如果您没有看到任何cookie,则表示浏览器没有获得任何会话,因此您应该确保(如Josh所述)inheritance正确的接口并访问cookie。 (别忘了使用System.Web.SessionState)

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

 string sesId = context.Session.SessionID; 

你给响应写任何东西之前