我将用户对象存储在 session 中,将它们拉出到 Controller 中,有时会向其中写入一些数据。但是当用户同时发帖时, session 会由于某种原因而混合在一起。
有人知道这是怎么可能的吗?
典型帖子:
[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"]));
}
我在每个页面上回显 session ID,当几个用户使用该网站时,他们会得到彼此的 session + session ID ...
@update:3位经验丰富的开发人员已经找了2天的问题了,仍然没有解决。已经删除了大约 95% 的代码,仍然是同样的问题。服务器发回另一个 session 的响应
最佳答案
这是不可能的。 所以这是我的猜测: 您错误地测试了这一点,您使用的是同一浏览器中的不同选项卡。 有些人不知道这不会创建不同的 session 。
尝试在 2 个不同的浏览器(即 firefox 和 chrome)上进行测试,因为它们不会共享 session (因为 session ID 通常存储在 cookie 中)。
如果是这种情况,请报告。
关于asp.net-mvc - MVC.net session 在用户之间混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4605803/