我将用户对象存储在会话中,将它们拉出控制器,有时会将一些数据写入其中。但是当用户同时发帖时,会话因某种原因而混淆。
有谁知道这是怎么可能的?
典型帖子:
[HttpPost]
public ActionResult Index(QuestionModel model, FormCollection collection)
{
var person = ((Person)Session["Person"]);
if (!ModelState.IsValid)
{
ModelState.Clear();
ModelState.AddModelError("", Global.Global.error);
return View(new QuestionModel(person.page, (CultureInfo)Session["culture"]));
}
person.page = model.Page;
while (person.Answers.Count > model.Page - 1)
{
person.Answers.RemoveAt(person.Answers.Count - 1);
}
var answer = new Answer() { answer = model.ChosenAnswer, Question = "Q" + person.page };
person.Answers.Add(answer);
if (!CheckForNextPage(person.page)) { person.hasFinishedQuestions = true; return RedirectToRoute("Result"); }
person.page++;
return View(new QuestionModel(person.page, (CultureInfo)Session["culture"]));
}
我在每个页面上回显会话ID,当有几个用户使用该网站时,他们会得到其他会话+ sessionid ......
@update:3位经验丰富的开发人员一直在寻找问题2天,仍然没有解决方案。已删除约95%的代码,仍然是同样的问题。服务器发回来自另一个会话的回复答案 0 :(得分:2)
这是不可能的。 所以这是我的猜测: 您正在测试错误,您正在使用同一浏览器中的不同选项卡。 有些人不知道这不会产生不同的会话。
尝试在2个不同的浏览器(即firefox和chrome)上测试它,因为它们不会共享会话(因为会话ID通常存储在cookie中)。
如果是这种情况,请报告。
答案 1 :(得分:2)
我们“解决了”它。我们实际上没有解决它,但我们将所有源代码复制到一个新项目,重新编译,一切正常。直到今天,我们仍然不知道为什么,以及这个错误是如何发生的......