2009-10-07 209 views
1

我有一个简单的ASP.NET MVC应用程序。当第一个操作方法运行时,它将一些数据存储在Session变量中。在结果视图中,我有一个jQuery Ajax调用由一个按钮触发另一个操作方法。会话ID随机更改

当我点击按钮在服务器端使用不同的会话ID时,它有点随机。开始和点击按钮之间有时会有一秒左右的时间差,并且会话ID仍会改变。这会中断应用程序,因为它试图检索第一个操作方法存储的数据。

任何想法是怎么回事?这两个请求都是相同的URL。

  1. 我看到方法一实例化与Id X的新会话并存储数据。
  2. 加载Jquery请求后立即触发。我在请求标头上看到不同的会话cookie ID。
  3. 我得到一个错误

非常感谢 “找不到数据”,

+1

您的服务器场的后面? – Gregoire 2009-10-07 19:38:06

+0

不,这是我的本地VS 2008 dev服务器。 – madcapnmckay 2009-10-07 20:39:58

回答

2

这是设计和ASP.NET尝试为用户存储会话的高效率。请记住,除非您在会话中存储任何会话值更改。

如果你想告诉您希望它跟踪用户会话ASP.NET,你可以做的两两件事之一:

  1. 商店的东西了会议。
  2. 简单处理GLobal.asax中的Session_Start事件。此方法的存在将告诉ASP.NET跟踪会话,即使会话中没有数据。

//注意:如果您正在执行此操作,则无需向会话添加任何内容... 公共无效在session_start(对象发件人,EventArgs的)
{
}

这种现象已经引起了我的担心在过去的:)

+0

这很有趣。但是,我在会话中存储了某些内容,然后在后续请求中尝试检索它。我已经添加了Session_Start方法,并且似乎可以做到这一点。很困惑。 – madcapnmckay 2009-10-08 09:07:53