2012-08-31 50 views
2

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

测试案例1:

  1. 启动应用程序。

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

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

  4. Reopen主页/ 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(); 
    } 
} 
+1

通过此http://stackoverflow.com/a/329523/1557322。希望这个信息会帮助你。 –

+0

我想你会将asp.net会话与浏览器会话混淆。 –

+0

@ViralShah,但我在这里ViewState没有问题 – Thuan

回答

1

添加

public void Session_OnStart() 
    { 
    } 

到Global.asax中帮助解决问题。