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

发布于 2024-10-15 21:54:05 字数 266 浏览 7 评论 0 原文

我对 GenericHandler 和 anonymousIdentification 有疑问。

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

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

I have an issue with GenericHandler and anonymousIdentification.

Basically if <anonymousIdentification enabled="true" /> is turned on in the web config, whenever a JQuery GET/POST request is sent to the server, that request executes under a new user and a new user session.

Is there a way to mitigate this? I need to access the current user's session variables... It is really frustrating!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

毁梦 2024-10-22 21:54:05

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

Generic handlers must implement the IReadOnlySessionState interface to access session variables. If you also need to write session variables, implement IRequiresSessionState.

天涯沦落人 2024-10-22 21:54:05

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

}

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

}
谈情不如逗狗 2024-10-22 21:54:05

你可以使用这个:

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

You can use this:

public class Handler : 
    IHttpHandler, 
    System.Web.SessionState.IReadOnlySessionState
冬天旳寂寞 2024-10-22 21:54:05

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

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

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

string sesId = context.Session.SessionID;

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

I suggest in the web browser you enable the network tab in the developer mode.
Then check in the AJAX which cookie is sent (if any).

If you do not see any cookie, it means the browser did not get any session, thus you should make sure (as stated by Josh) to inherit the right interface and access the cookie. (Don'f forget to use System.Web.SessionState)

In order to generate the cookie, access the session object's sessionID:

string sesId = context.Session.SessionID;

Before you write anything to the response.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文