【问题标题】:Sessions randomly clear on Win2008 ASP.NET websiteWin2008 ASP.NET网站上的会话随机清除
【发布时间】:2011-10-28 12:40:09
【问题描述】:

我在网上找不到任何关于此的信息,所以我想我会在这里问。在 Windows 2008 Server 环境中随机清除会话是否有任何问题?这个问题是完全随机的并且非常不可预测。除了注销之外,我没有清除会话的代码,并且不太确定可能导致它的原因(嗯,我有想法......)

我的主人,我和他相处了很多年(从来没有遇到过问题)告诉我,Windows 2003 更擅长管理会话变量,如果我是,我可能会摆脱这个会话清除问题移动到 2003 Server 环境。问题是,我已经使用 URL 重写模块在 IIS 7 上设置和运行,我宁愿不移动或重新配置 URL 重写。技术支持说我正在运行的应用程序池配置正确。我的会话超时在 Web.config 中设置为 60 分钟,我的主机告诉我我的域的会话超时设置为 60 分钟。

我可以选择使用 Azure AppFabric Cache 进行会话,但我不想每月多付 50 美元——这是一个相当小且收入低的网站。我目前使用的是 SQL Azure 数据库,但据我所知,数据库会话在 SQL Azure 上并不理想。

想法?

【问题讨论】:

  • 你在使用 Shared AppPool 和 InProc Session 状态吗?
  • 感觉很像你的应用域在回收。您可以将静态 DateTime 添加到您的一个类中,将其初始化为 DateTime.Now 在静态构造函数中,在您的主页中访问它以确保静态构造函数运行,并构建一个特殊页面来显示它的值。下次会话消失时,运行您的特殊页面以查看应用程序域已经运行了多长时间。
  • 我也遇到过类似的问题。但我使用了一些技术来缩小原因。尝试为 Application_Start、Application_End、Application_Error、Session_Start、Session_End 添加日志记录尝试尽可能多地记录信息。这帮助我隔离了一个问题。我的主机配置了会话超时配置仅为 3(是)分钟的机器配置。
  • 谢谢大家。我确定这是我的主机的问题,我刚刚重构以使用一些数据库调用。在会话中存储要容易得多,但我想我现在已经修复了。最终,当我再次需要会话时,我会知道使用比 InProc 更好的存储机制。

标签: asp.net session iis windows-server-2008 session-state


【解决方案1】:

您是否正在修改网站中的任何文件?

网站文件夹或文件结构的更改通常会触发应用程序池回收、重置会话。解决方法是使用像SQL Server Session State provider 这样的持久会话存储。

【讨论】:

  • 感谢您的提醒。我仍然没有缩小导致它的原因,但是在昨晚的大部分时间里我只是决定取消 Sessions(我只存储了大约 8 个)并用 BL 和 DB 调用替换它们。我最终可能需要回到会议,但目前这应该可行。我正在使用 Azure 数据库,我很难发现 SQL Server 会话状态提供程序在技术上不受支持,但我可以使用 Azure AppFabric,我可能会这样做。感谢您抽出宝贵时间回复!
  • 还不支持?大约一年前我玩过 Azure,那里有一些 hacky 实现允许 SQL 会话状态提供程序工作,但它需要使用工作角色,除了运行存储过程之外什么都不做(代替工作队列SQL)。他们还没有添加支持真是太疯狂了。
  • 是的,据我了解,Microsoft 的首选实施方式是通过 AppFabric Cache,我完全可以理解。我知道 SQL Azure 方法应该可以正常工作,我也可以很容易地做到这一点。我刚刚决定摆脱我拥有的 5-6 个会话变量并进行一些额外的数据库调用。不过感谢您的评论! :)
【解决方案2】:

最有可能的答案是您的应用程序池出于某种原因正在对您进行回收,这将每次都转储您的进程会话。直接原因可能很多,尤其是在共享应用程序池的情况下。查看您的应用程序池是否被转储的一种简单方法是利用 asp.net 心跳监控,它可以配置为在这些事件发生时向您发送电子邮件。

【讨论】:

  • 感谢您的回复。我不确定是什么原因造成的,但我确定它在主机端。我最终只是重构使用一些业务层和数据库调用,现在应该可以解决这个问题。我肯定也会考虑更多的日志记录。伤不起! :)
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 2011-10-17
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2015-01-06
  • 2010-12-22
  • 1970-01-01
相关资源
最近更新 更多