我怀疑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;
}
}
问题是所有用户都获得了相同的会话,因此如果某个用户在此会话中插入新行,其他用户也可以看到它。
我认为我使用这个静态类来管理这个会话变量。或者我在这里遗漏了一些东西。
任何人都可以帮我这个吗?
编辑:
我设置和使用会话的地方:
public ActionResult InsertDocument(DocumentModel model)
{
//Some Code
DocumentSessionRepository.Insert(model);
}
查看我使用此会话绑定网格的位置。
@(Html.Telerik()
.Grid<DocumentModel>()
.BindTo((List<DocumentModel>)DocumentSessionRepository.AllDocuments())
答案 0 :(得分:2)
假设问题出在IList<DocumentModel>
实例中。如果为所有用户共享此实例,则会话是特定于用户的并不重要。看起来所有会话共享同一个实例。检查类实例化,例如,如果类在静态字段中实例化,并且该字段存储在会话中,则所有用户都将共享此实例。
我百分百肯定Current.Session
正常工作。