【问题标题】:Why is session state lost so quickly?为什么会话状态丢失得这么快?
【发布时间】:2014-02-18 21:22:40
【问题描述】:

我们有一个网络应用程序,客户可以通过它访问信息。许多客户报告说,他们在没有活动的 5 分钟内退出。我相信这应该只发生在默认的 20 分钟空闲超时之后,从我们的域内访问 Web 应用时就是这种情况。

我还花了几天时间对一个错误进行故障排除,在该错误中,大约 60% 的时间在回发之间丢失了一些用户的会话数据,从而导致应用程序错误,因为下一页需要数据。唯一的解决方案是一种变通方法,我使用一种额外的机制来缓存回发之间的数据,并在会话数据消失时从该缓存中提取数据。

我还注意到,访问的一些需要登录凭据的网站也会在回发之间将踢出去。例如,我上课的一所学校的网站需要其门户网站的登录凭据。在家里我从来没有任何问题,但如果我从我的工作域访问它,我经常会收到随机错误,表明我的凭据已丢失(即登录并浏览到页面后“不允许未经授权的访问”)。

在网络上寻找想法让我走了几条路,但大多数解决了 IIS 工作进程和 ASP.NET 并没有帮助我。

有人对如何解决这个问题有任何想法或建议吗?

【问题讨论】:

  • 您能否发布您的 web.config 中设置会话参数的部分?您是否在代码中操纵会话设置?
  • 会话参数未在 web.config 中设置。没有在代码中操作会话设置。

标签: asp.net iis session-state


【解决方案1】:

这不是因为编程问题...这是因为您的主机容量...正如您所知,会话是为每个用户在访问您的网站时创建的一种内存,当他们访问您的网站时它会终止完成访问......所以在这种情况下,我认为网站访问者的数量已经上升,所以默认情况下,当内存变满时,它会踢出一个会话并导致所有这些问题......我认为最好的办法是致电您获得主机服务的地方并要求提供满足网站需求的服务

【讨论】:

  • 我们托管站点,并发用户相对较少,Web服务器内存使用率远低于阈值。
【解决方案2】:

您只需将会话值存储到 cookie 中,这样您就可以在会话终止时访问该值.. 或者您可以使用全局文件来管理会话状态..

【讨论】:

  • 这并没有解决问题。
  • @field_b 你写的 -> 我相信这应该只发生在默认的 20 分钟空闲超时之后,从我们的域内访问 Web 应用程序就是这种情况。我还花了几天时间来解决一个错误,其中一些用户的会话数据在大约 60% 的时间回发之间丢失......
  • @field_b 您的凭据变空,因为您的会话值变空。这就是你退出的原因..
猜你喜欢
  • 1970-01-01
  • 2011-03-31
  • 2014-04-11
  • 2013-04-03
  • 2017-07-23
  • 2014-08-23
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多