Response.End()导致会话在第一次使用会话时丢失

时间:2012-08-31 05:37:45

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

我有一个使用MVC 2构建的站点。我的问题是Response.End()会在第一次访问会话时导致会话丢失

测试案例1:

  1. 启动该应用程序。

  2. 转到Home / X.项目已添加到session,并且会调用Response.End()

  3. 再次打开Home / X并检查Session["X"](在分配行之前添加断点。)返回 null。执行分配“X”的其余操作“再次参加会议。

  4. 重新开启Home / X.这一次Session["X"]会返回正确的值。

  5. 测试案例2:

    1. 保持Web应用程序正常运行。关闭浏览器并重新打开以打开新会话。访问Home / X。

    2. 结果:Session["X"]始终有值。

    3. 有人可以向我解释为什么会发生这种情况以及如何解决这个问题?

      [HandleError]
      public class HomeController : Controller
      {
          public ActionResult Index()
          {
              ViewData["Message"] = "Welcome to ASP.NET MVC!";
              return View();
          }
          public void X()
          {
              Session["X"] = "X";
              Response.End();
          }
      }
      

1 个答案:

答案 0 :(得分:1)

添加

    public void Session_OnStart()
    {
    }

到Global.asax有助于解决问题。