【问题标题】:ASP.NET MVC Session and SessionStateBehaviorASP.NET MVC 会话和 SessionStateBehavior
【发布时间】:2023-03-05 04:24:01
【问题描述】:

全部:

我一直在寻找这个问题的答案,如果这是一个骗局,请原谅我,我似乎找不到正确的答案。

假设您有一个标有 [SessionState(SessionStateBehavior.Disabled)] 的 ASP.NET MVC 控制器 属性。在此控制器上调用操作是否“刷新”会话状态,使其保持“活动”?具体来说,我有一个 AJAX 请求调用控制器以保持会话“活动”,因为该应用程序是由 javascript 驱动的单页应用程序,并且我不希望用户会话终止,所以每 30 秒我会调用一次到这个控制器。同样,如果控制器被标记为 SessionStateBehavior.ReadOnly,它会保持活动状态吗?最后,为此目的使用 ASP.NET MVC 控制器不是最好的方法(有没有更好的方法)?

谢谢!

【问题讨论】:

  • 我不明白为什么您觉得需要每 30 秒进行一次 ajax 调用。会话状态超时通常设置为至少 10 分钟,通常为 20 或 30 分钟。但是,我建议您重写应用程序以不依赖会话状态保持活动状态,因为 IIS 可以随时重置会话。超出您的控制范围(内存条件、应用程序池回收、异常、月相等)。相反,将您需要的任何状态保存在某处,如果自用户上次访问以来会话已超时,则重新加载它。
  • 在大多数情况下,我会同意,但在当前应用程序中,需要在后台为当前用户保留一个非常大的数据集。我真的无法详细说明它,但我同意你的观点,99% 的时间你都希望应用程序无会话。
  • 如果数据非常大,那就更需要不依赖会话了。当内存变得紧张时,IIS 将随机终止会话。如果会话中有大量数据,那将保证出现奇怪的、难以重现的问题。

标签: asp.net-mvc session-state


【解决方案1】:

会话状态将自动保持活动状态,操作没有任何属性,具体取决于 web.config 的配置方式。要对其进行配置,请参见此处:http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.100).aspx

控制器应该没问题,但您可能需要研究 Web API,因为它会在这种情况下提供更多功能:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

【讨论】:

  • 感谢您的回复。很高兴知道。但是标有 [SessionState(SessionStateBehavior.Disabled)] 和 [SessionState(SessionStateBehavior.ReadOnly)] 属性的控制器呢?调用这些操作是否会使会话保持活动状态?这实际上是我的问题中最重要的部分。
  • 瑞恩,你找到问题的答案了吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
相关资源
最近更新 更多