ASP.NET session 意外结束

标签 asp.net session visual-studio-2005 web-config session-variables

我在 ASP.NET 2.0 上遇到了一个非常奇怪的 session 问题。我正在使用的系统使用 session 变量来存储对象(如问题和答案)上的参数以生成报告。这些是同名类的实例,因此它们填充了如下参数:

该报告是通过 4 个 aspx 页面生成的。第一个定义位置和日期参数,第二个页面存储问题,第三个存储答案。最后一个显示指向生成的 Excel 和 HTML 格式报告的链接。
所有变量数据都存储在 session 中,一切顺利,直到最后一页,当 Session.Abandon() 之类的事情发生时,Session_End 事件被触发,所有变量都丢失了。对于第一次使用报告的每个登录用户,这种情况每天只会发生一次,然后您可以一整天尝试数十次并且不会再次看到它。

该问题始终发生在同一页面上,并且 session 模式为 InProc。

我已经完成了以下验证:

  • 检查是否有任何 Session.Abandon() 或 Session.Clear() 命令。没有了。
  • 检查 session 超时,它设置为 18 分钟,问题随时发生,如上所述,无论您在 18 分钟内使用它多久。
  • 在身份验证下检查表单超时。它也设置为 18 分钟。
  • 我了解到 Server.Transfer() 存在一个错误,有时可能会刷新 session 和 View 状态,并已替换为 Response.Redirec()
  • 一行一行的代码监控 session ,一切顺利,当页面完全加载时,它就会死掉。所有变量都消失了,但 session 仍在工作。
  • 就我而言,IIS 配置正确。我无法访问它,但所有其他系统都可以完美运行。
  • 还分析了一些上述系统,寻找可能发生什么的一些线索,但它们的 web.config 文件与我遇到的问题非常相似,并且没有实现特殊的代码来以不同的方式与 session 交互。
  • 还考虑过监视 IIS 以重新启动应用程序,但我很确定它没有超过 15 的默认限制。不过,我无权访问 IIS 服务器,并且在我的计算机上完成的所有测试都使用 ASP.NET 开发服务器.问题发生在两者上。
  • 检查了进程回收的可能性,例如 .config 和 asax 文件更改,bin 目录的更改,没有发生。

  • 以下限制适用:
  • 由于公司政策,不能将 session 模式更改为 InProc 以外的模式。
  • 报告生成“流程”是通过 4 个页面创建的。我不同意这一点,但由于时间和预算限制,无法重做。

  • 任何想法或解决方案都是有帮助的。对于任何必要的更新和测试,我会保持联系。

    最佳答案

    我要感谢大家的努力!

    我和我的团队发现了这个案例中发生的事情。有一种方法可以删除网站文件夹中的临时文件和目录,从而导致回收和 session 刷新。该代码正在计算日期和时间,并且应该每 24 小时删除一次目录,因此当用户首次登录系统并生成报告时,它删除了目录并刷新了 session 。

    关于ASP.NET session 意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508424/

    相关文章:

    javascript - 无法理解 javascript 事件和函数

    c# - C# 中的 HTML 元素属性

    php - 有什么方法可以确定*实际* session 保存路径吗?

    .net - VS2005中asp.net调试问题

    asp.net - 从永久链接 URL 下载文件,而不是直接的 exe url

    asp.net - 在回发过程中留在当前的 jQuery 选项卡上?

    php - 这段代码安全吗?

    java - jsp直接跳转到html而不是通过servlet

    visual-c++ - 如何在编译中使用/NODEFAULTLIBS 选项?

    visual-studio - 如何修复Visual Studio中的生成错误:““LC.exe”以代码-1退出”