我在使用 asp.net c# 站点时遇到问题,我将 session 状态对象设置为 true,然后重定向到另一个需要检查 session 状态对象的值并且它为 null 的页面。
有时它设置正确,而其他时候只是空值。
当我在本地机器上调试时,它每次都能完美运行。只有当我上传到我的网络服务器时,这种喜怒无常的行为才会发生。
由于它基于网站的安全性,因此 session 数据每次都有效且准确显然很重要。
session 状态数据不可靠吗?
据我所知,它设置为 inproc、无 cookie、30 分钟超时、普通的 IIS 安装。
有人有什么建议吗?也许我需要在 session 数据的存储和读取之间进行 thread.sleep?
注意:写入和读取之间的时间约为 70 毫秒。有足够的时间将数据写入 RAM......
最佳答案
没有。听起来你在滥用 session 状态。您不能依赖用户的 session 。您的 ASP.NET 工作进程可能会回收,重新启动应用程序并终止所有 session ,或者您网站中的文件可能会更改,导致您的应用程序重新启动并刷新所有 session ,cookie 可能会在客户端上刷新,可能会发生超时,等等。
因此您必须为所有这些场景提供 session 状态。尽量避免为这样的事情使用 session 状态。如果您在 session 状态中设置访问权限并且您不确切知道它是如何工作的,那么您可能会打开您的站点以承担很多安全风险。
关于c# - session 状态未在页面之间保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2758351/