会话ID随机变化

时间:2009-10-07 19:35:05

标签: c# asp.net session

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

当我点击按钮时,在服务器端使用了不同的会话ID,它有点随机。在启动和单击按钮之间有时会出现一秒钟的差距,会话ID仍然会发生变化。这会在尝试检索第一个操作方法存储的数据时中断应用程序。

知道发生了什么事吗?这两个请求都是相同的URL。

  1. 我看到方法一用Id X实例化一个新会话并存储数据。
  2. 加载Jquery请求后立即触发。我在请求标题上看到了不同的会话cookie ID。
  3. 我收到错误“未找到数据”
  4. 非常感谢,

2 个答案:

答案 0 :(得分:2)

这是设计使然,ASP.NET试图在为用户存储会话方面提高效率。请记住,除非您在会话中存储会话值更改的任何内容。

如果您想告诉ASP.NET您希望它跟踪用户会话,您可以执行以下两项操作之一:

  1. 在会话中存储内容。
  2. 简单处理GLobal.asax中的Session_Start事件。即使会话中没有数据,此方法的存在也会告诉ASP.NET跟踪会话。
  3. //注意:如果您正在执行此操作,则无需向会话添加任何内容... public void Session_Start(object sender,EventArgs e)
    {
    }

    这种行为让我在过去很担心:)

答案 1 :(得分:0)

您的所有AJAX调用是否都使用相同的服务器名称:

http://localhost/whatever

VS

http://machinename/whatever