MVC.net会话在用户之间混合

时间:2011-01-05 15:27:32

标签: asp.net-mvc session session-state session-variables

我将用户对象存储在会话中,将它们拉出控制器,有时会将一些数据写入其中。但是当用户同时发帖时,会话因某种原因而混淆。

有谁知道这是怎么可能的?

典型帖子:

  [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%的代码,仍然是同样的问题。服务器发回来自另一个会话的回复

2 个答案:

答案 0 :(得分:2)

这是不可能的。 所以这是我的猜测: 您正在测试错误,您正在使用同一浏览器中的不同选项卡。 有些人不知道这不会产生不同的会话。

尝试在2个不同的浏览器(即firefox和chrome)上测试它,因为它们不会共享会话(因为会话ID通常存储在cookie中)。

如果是这种情况,请报告。

答案 1 :(得分:2)

我们“解决了”它。我们实际上没有解决它,但我们将所有源代码复制到一个新项目,重新编译,一切正常。直到今天,我们仍然不知道为什么,以及这个错误是如何发生的......