【问题标题】:Why does my application take two sessionIDs?为什么我的应用程序需要两个 sessionID?
【发布时间】:2011-10-13 12:38:35
【问题描述】:

在 Web 应用程序中,出于某种原因,我需要 SessionID,因此,我将其保存在数据库中。应用程序在启动之前做了两次重定向,我发现它获取了两个 SessionID。第二个还在。

为什么会有这种行为?任何想法?如何防止将其保存在数据库中的一条记录中。

抱歉,我无法发布代码,它与另一个逻辑复合。

【问题讨论】:

  • 为什么需要 sessionid?

标签: asp.net session


【解决方案1】:

丢失/重新开始会话的原因可能有上百万种。没有您的代码,很难提供建议。

您可以自己尝试的一件事是在 global.asax 文件中使用 Session_End 事件,只要您使用的是 inProc 会话。在那里放一些代码,让它告诉你会话何时结束,这样你就可以追踪问题/导致它在你的应用程序中结束的原因。

您可以查看的另一个想法是您的重定向方法。确保您保留会话,如下所示:Response.Redirect("~/default.aspx", false)。

【讨论】:

  • 会话结束时,我将要写入的代码放入 Log 中,但到目前为止,没有写入任何内容。似乎它在会话超时时触发。不是吗?
  • Session_End 会在会话结束时触发——不管是因为超时,还是调用 session.abandon 或其他原因。但是...它仅在您的会话(在您的 web.config 中)使用 inProc 内存时才有效。如果您使用的是状态服务器等,则它不起作用。
  • 还要查看 response.redirect 和 server.transfer。修改了我上面的答案。
【解决方案2】:

另一种可能性是您可能没有在第一次会话中添加任何内容。默认情况下,您会在每次回发时获得一个新的 sessionID除非您在会话中添加了一些内容。

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2013-05-14
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    相关资源
    最近更新 更多