2

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

测试用例 1:

  1. 启动应用程序。

  2. 转到主页/X。一个项目被添加到session并被Response.End()调用。

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

  4. 重新打开主页/X。这次Session["X"]返回正确的值。

测试用例 2:

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

  2. 结果:Session["X"]总是有一个值。

谁能向我解释为什么会发生这种情况以及如何解决?

[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();
    }
}
4

1 回答 1

1

添加

    public void Session_OnStart()
    {
    }

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

于 2012-08-31T11:18:32.843 回答