【发布时间】: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