gpt4 book ai didi

asp.net - 许多用户之间的 session 自动交换 [ASP.NET]

转载 作者:行者123 更新时间:2023-12-02 14:56:44 25 4
gpt4 key购买 nike

我在 ASP.NET 项目中使用了自定义 SessionWrapper 类来处理 Session。看起来不错,但我最近发现它有一个有趣的错误。如果许多用户登录我的网站,他们的 session 将被交换或混合。用户A将拥有用户B的 session ,并且用户C可能拥有用户A的 session 。用户刷新页面后可能会发生变化。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

namespace MyNamespace
{
public class SessionWrapper
{
public static string USER_SESSION = "userSession";

public static void SetUserSession(string email, Dictionary<int, DateTime> products)
{
UserSession userSession = new UserSession() { Email = email, Products = products };
System.Web.HttpContext.Current.Session.Add(USER_SESSION, userSession);
}

public static UserSession GetUserSession()
{
if (System.Web.HttpContext.Current.Session[USER_SESSION] != null)
{
return System.Web.HttpContext.Current.Session[USER_SESSION] as UserSession;
}
return null;
}

public static void RemoveUserSession()
{
if (System.Web.HttpContext.Current.Session[USER_SESSION] != null)
{
System.Web.HttpContext.Current.Session.Remove(USER_SESSION);
}
}
}

public class UserSession
{
private string email;
private Dictionary<int, DateTime> products = new Dictionary<int, DateTime>();

public string Email
{
get;
set;
}

public Dictionary<int, DateTime> Products
{
get;
set;
}
}
}

最佳答案

除了 Jonas H 注意到的应用程序中的一些奇怪代码之外,唯一的原因是您正在单独选项卡中的一个浏览器实例同一浏览器的两个实例中测试它 .

尝试显示 HttpContext.Current.Session.SessionID 以确定您是否在所有情况下都处于同一个 session 中。

关于asp.net - 许多用户之间的 session 自动交换 [ASP.NET],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com