【问题标题】:Session variable gets cleared without any apparent reason会话变量在没有任何明显原因的情况下被清除
【发布时间】:2016-05-20 13:07:28
【问题描述】:

我有这段代码:

var thisUser = Session["user"];
if (thisUser == null)
{
    LogFile.Log("Logging out");
    Response.Write("xp");
}

我试图找出为什么有时当我使用系统几分钟后,user 会话变量突然变为空。

它在不同的场景中随机发生。

我在任何时候都不会将 Session["user"] 设置为 null。

会话超时设置为 20 分钟。

我在任何时候都不会打电话给Session.Clear()。

关于为什么会发生这种情况,我应该考虑什么想法\想法\事情?

如果有帮助,我正在使用 Firefox。

系统是用asp.net搭建的。

更多信息请咨询。

【问题讨论】:

  • 那不是经典的asp。 “玩系统”是否包括编辑 web.config?
  • 您是否将应用程序托管为多工作进程?
  • @Jamiec 是的,我编辑了这个问题,不,我没有玩任何项目文件..
  • @Khanh TO 它使用 IIS
  • 但是您是否在多工作进程应用程序池中托管? stackoverflow.com/questions/19813001/…

标签: c# asp.net


【解决方案1】:

您呼叫的是同一个主机吗?如果基本 URL 不同,服务器会将其视为不同的用户。例如:

http://localhost/path/to/resource 和 http://localhost:80/path/to/resource

两者都指向同一个资源,但请求不同,会话 cookie 会不同,或者不存在。

一种简单的测试方法是启动浏览器的开发人员工具栏并监控网络流量。比较 URL 以确保它们是相同的基本路径,并且请求中传递了相同的会话 cookie。

【讨论】:

    【解决方案2】:

    首先,这看起来像 C# 和 ASP.NET,而不是经典的 ASP。现在,如果您自己从未清除会话并且服务器(或应用程序池)从未重新启动,那么丢失会话的唯一方法就是清除浏览器的 cookie。

    【讨论】:

    • 这就是我想要理解的,因为它suddenly在你玩系统时随机发生,我不会重置浏览器缓存
    【解决方案3】:

    编辑 web.config 将回收应用程序池,从而清除会话信息。

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 2011-05-25
      • 2013-04-08
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多