我的GenericHandler和anonymousIdentification存在问题。
基本上,如果在Web配置中打开<anonymousIdentification enabled="true" />
,每当向服务器发送JQuery GET / POST请求时,该请求将在新用户和新用户会话下执行。
有没有办法减轻这个?我需要访问当前用户的会话变量......真的很令人沮丧!
答案 0 :(得分:38)
通用处理程序必须实现IReadOnlySessionState
接口才能访问会话变量。如果您还需要编写会话变量,请实现IRequiresSessionState
。
答案 1 :(得分:11)
实施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");
}
}
答案 2 :(得分:2)
您可以使用:
public class Handler :
IHttpHandler,
System.Web.SessionState.IReadOnlySessionState
答案 3 :(得分:-1)
我建议您在网络浏览器中启用开发者模式下的网络标签。 然后检查AJAX发送的cookie(如果有的话)。
如果您没有看到任何cookie,则表示浏览器未获得任何会话,因此您应确保(如Josh所述)继承正确的界面并访问cookie。 (别忘了使用System.Web.SessionState)
要生成cookie,请访问会话对象的sessionID:
string sesId = context.Session.SessionID;
之前,您可以在回复中写任何内容。