gpt4 book ai didi

asp.net-mvc - Asp.Net mvc session 与缓存

转载 作者:行者123 更新时间:2023-12-01 07:30:28 26 4
gpt4 key购买 nike

我们一直在开发asp.net mvc 应用程序。只要用户登录,我们就必须维护一些特定于用户的信息。我有什么选择?缓存在站点的所有用户之间共享。 Session 似乎是一个选项,但我附加了用于显示 Crystal Reports 的 webforms,而 webforms 和 MVC 使用的 Session 对象是不同的:Mvc 使用 HttpSessionStateBase,而 webforms 使用 HttpSessionState。

我应该在 session 中保留多少信息(我有一个大约 30 个整数/用户的数组)?我应该将它保留在 session 中还是应该使用 session 和缓存的某种组合?

编辑:我创建了一个 SessionService,它接受 HttpSessionStateBase 作为参数,并且从 Mvc 我称之为:

SessionService _service = new SessionService(HttpContext.Session);

它返回 HttpSessionStateBase 但正如 Darin 建议的那样,它是抽象类,因此它也可能使用 SessionStateWrapper 实现。在网络表单场景中,我正在使用类似的东西
HttpSessionStateWrapper Session = new HttpSessionStateWrapper(HttpContext.Current.Session);
SessionService _SessionRepository = new SessionService(Session);

最佳答案

在 session 中为每个用户存储 30 个整数是可以的。

但现实是,使用缓存可以解决您需要注意的问题:

  • session 状态 - 除非使用状态服务器或 sql 服务器 - 将是 volatile 并且可能会因回收而丢失。此外,如果您将站点移动到多个服务器,则如果您使用易变 session ,则必须在所有服务器上填充 session 。
  • 许多 ASP NET 功能如 身份验证基于 cookie 而不是基于 session 。您需要知道它们不能协同工作。例如,如果您使用表单例份验证并重新启动站点或回收应用程序,则在您丢失所有 session 信息的同时,用户仍保持身份验证状态。
  • 关于asp.net-mvc - Asp.Net mvc session 与缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430568/

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