gpt4 book ai didi

asp.net-mvc-3 - asp.net mvc session 经常在托管环境中过期

转载 作者:行者123 更新时间:2023-12-05 00:38:14 26 4
gpt4 key购买 nike

如果其他人有同样的问题并得到解决,将不胜感激分享他的解决方案:

问题:
我在 asp.net mvc3 中完成了网站, session 经常过期,在几秒钟到最多 5 分钟之间。在 web.config 中,我将超时设置为 2880 分钟,我还将 sessionstate 设置为 stateserver。我还删除了使用默认超时的超时,仍然有问题:

<sessionState mode="StateServer"></sessionState>
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"/>
</authentication>

我做了一个示例网站,只包含登录功能和一些数据库交互来模拟环境,然后我得到了更稳定的超时 2 分 50 秒(测试了 9 次),这仍然不正确,因为我在网络配置。

在用户登录时的代码中,我创建了一个 AuthenticateTicket 并将其保存到 cookie,然后在安全页面中我检查了 User.Identity 并且 Controller 具有过滤器 [Authorize],因此当 session 过期时我被发送到登录页面。

在同一台托管服务器上,我有其他使用 .NET 3.5 Web 表单的旧应用程序,对它们来说, session ​​没问题,仅对于新的 mvc3 和 mvc3, session 经常过期。感谢您提供任何线索。

最佳答案

最终的:

我的具体问题是我的托管 (Arvixe) 为每个网站设置了 100 MB 的内存限制。由于映射到数据库的复杂查询,使用 EF(以及可能的任何 ORM)会增加内存使用量,因此我的网站使用了 100 MB 以上,导致应用程序池由于 100 MB 内存限制而重新启动,因此 session 被重置。

解决方案:

  • 优化您的 MVC 网站 ( see this post )
  • 使用另一种方式保持 session ,可能是将其存储在 SQL 数据库中。
  • 升级到虚拟或专用服务器

  • 对于我的具体情况,将每个网站设置为使用共享应用程序池暂时解决了问题,而我按照第一个选项的帖子优化我的网站,以便我可以在 Arvixe 的 100MB 内存限制下进行。

    关于asp.net-mvc-3 - asp.net mvc session 经常在托管环境中过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885257/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com