gpt4 book ai didi

c# - Current.Session 工作奇怪

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:04 24 4
gpt4 key购买 nike

我对 HttpContext.Current.Session["someSession"] 有疑问。

在我的网站中,我有一个空网格,用户可以在网格的编辑模式下添加一些行。当用户插入一个新行时,我将它存储在一个 session 中,所以我有这个类:

public static class DocumentSessionRepository
{
public static IList<DocumentModel> AllDocuments()
{
return (IList<DocumentModel>)HttpContext.Current.Session["Documents"];
}

public static void Insert(DocumentModel product)
{
AllDocuments().Add(product);
}

public static void Delete(Guid? idDocument)
{
var target = GetOneDocument(p => p.IDDocument == idDocument);
AllDocuments().Remove(target);
}

public static DocumentModel GetOneDocument(Func<DocumentModel, bool> id)
{
var one = AllDocuments().Where(id).FirstOrDefault();
return one;
}
}

问题是所有用户都获得相同的 session ,因此如果某个用户在此 session 中插入新行,其他用户也可以看到它。

我认为我使用这个静态类来管理这个 session 变量有些困惑。或者我在这里遗漏了什么。

谁能帮我解决这个问题?

编辑:

我设置和使用Session的地方:

 public ActionResult InsertDocument(DocumentModel model)
{
//Some Code
DocumentSessionRepository.Insert(model);
}

查看我在此 session 中绑定(bind)网格的位置。

  @(Html.Telerik()
.Grid<DocumentModel>()
.BindTo((List<DocumentModel>)DocumentSessionRepository.AllDocuments())

最佳答案

假设问题出在 IList<DocumentModel>实例。如果此实例为所有用户共享,则 session 是用户特定的并不重要。看起来所有 session 都共享同一个实例。检查类实例化,例如,如果类在静态字段中实例化,并且该字段存储在 session 中,则所有用户将共享该实例。

我 100% 确定 Current.Session工作正常。

关于c# - Current.Session 工作奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206247/

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