首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp.net中丢失会话数据

在asp.net中丢失会话数据
EN

Stack Overflow用户
提问于 2015-01-29 20:30:22
回答 1查看 257关注 0票数 1

我的IIS会话偶尔会丢失其中存储的所有数据,通常需要大约3-5分钟,但肯定比web.config中设置的会话超时时间要短。这个问题不能可靠地重现,当它发生时,根据日志,AppPool没有被回收,会话ID保持不变,它只是丢失了所有数据。对如何调试有什么建议吗?

到目前为止,我尝试覆盖会话提供程序,并将会话数据存储到一个静态变量中,我们检查了所有相关的超时,并在会话中存储了一个虚拟值,该值也已丢失

EN

回答 1

Stack Overflow用户

发布于 2015-01-29 20:37:18

许多事情可能会导致会话状态神秘地消失。

  1. Your sessionState timeout has expired
  2. 您更新您的web.config或其他文件类型,导致您的AppDomain回收
  3. 您的IIS中的AppPool
  4. 您使用许多文件更新您的站点,ASP.NET会主动销毁您的AppDomain以重新编译和保留内存。

如果您使用的是IIS 7或7.5,则需要注意以下几点:

默认情况下,IIS会将AppPools设置为在一段时间内自动关闭默认设置,IIS会将AppPools设置为每1740分钟循环一次(显然取决于您的根配置,但这是默认设置)

  1. 在IIS中,请查看AppPool的“高级设置”。在中有一个名为“空闲超时”的属性。将其设置为零或大于默认值(20)。
  2. 在IIS中,检查AppPool的“回收”设置。您可以在此处启用或禁用AppPool回收。向导的第2页用于记录关闭的每种类型的AppPool的事件日志。

如果您使用的是IIS 6,则应用相同的设置(大部分情况下,只是访问它们的方式不同),但是让它们记录回收是一件很痛苦的事情。下面是一个链接,指向一种让IIS6记录AppPool回收事件的方法:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28214816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档