gpt4 book ai didi

asp.net - InProc session 数据消失

转载 作者:行者123 更新时间:2023-12-02 01:09:18 29 4
gpt4 key购买 nike

我大约一周前才注意到这一点。我正在存储有关用户正在玩的当前谜题的数据 (www.wikipediamaze.com),如下所示:

HttpContext.Current.Session.Add("puzzleInfo", currentPuzzleInfo);

我知道使用“InProc”模式在 session 中存储数据非常不稳定,并且每当 web.config 更改或任何其他因素(包括回收应用程序池)时都会重置。

但是我的数据一次只停留几秒钟(时间是可变的,但实际上一点也不长),然后就消失了。我处于共享托管环境中,所以我不知道这是否与此有关。

知道发生了什么吗?如果我将其作为 cookie 直接存储在客户端上会更好吗?请帮忙。

谢谢!

最佳答案

疑难解答

每隔几秒丢失数据是不寻常的,您的共享托管提供商可能存在问题 - 听起来服务器由于某种原因不断丢弃 session 。您可以显示 sessionID (Session.SessionID) 并查看它是否发生变化。

服务器上的其他人可能会导致进程崩溃。这是一篇关于解决此类问题的 msdn 博客文章(向下滚动大约 25%):http://blogs.msdn.com/webtopics/archive/2009/07/22/in-proc-session-state-management.aspx

这在共享托管环境中对您没有太大帮助,但您可以将其传递给支持链。也许他们可以查看事件日志并确定谁破坏了 IIS,然后引导他们。

正如肖恩·麦克唐纳所说:

...given that you're in a shared hosting environment, there's a decent chance that there is more than one web server hosting your site. If multiple servers are serving up your site and a load balancing mechanism is in-use that doesn't maintain any sort of session affinity, you could simply be bouncing to a different web server and starting a new session; after all, in-proc session is not going to follow you across boxes.

状态持久化的替代方案

无论如何,我总是发现 InProc 即使在专用服务器上也会间歇性地不可靠,因此我避免使用它。

对 cookie 保持谨慎——cookie 会随每个请求(图像、脚本等)一起传输,并且应保持在最低限度。您可能会想,“嗯,这个项目不需要扩展”,但是一旦您做出了项目范围的设计决策,即您将使用 cookie 来保存您的状态,那么您就会遭遇众所周知的挫伤。

我的意思是,您正在脱离最佳实践,并且可能会遇到一些丑陋的情况,就像我需要暂时保留 xml 文档一样。这在 cookie 中可不是一个好主意!

如果您由于处于共享托管环境中而无法设置 session 状态服务器(顺便说一下,这非常简单),您可以查看 SqlSessionStateStore,它可以让您将 session 数据存储在SQL 服务器。

关于asp.net - InProc session 数据消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1335025/

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