【问题标题】:asp.net mvc storing user dataasp.net mvc 存储用户数据
【发布时间】:2009-09-13 06:22:21
【问题描述】:

我应该如何将用户数据存储在 asp.net mvc 中?假设用户希望每页查看 50 条记录。我想将它保存在 Session 中,但如果我做得对,每次初始化新控制器时 Session 都会重置。那么在哪里呢?饼干?

【问题讨论】:

    标签: asp.net-mvc session cookies


    【解决方案1】:

    通常会话不会在控制器初始化时重置!确保您没有从代码中清除会话。 无论如何,将其存储在会话中会导致记录限制经常被重置(取决于会话超时参数)。

    考虑将其存储在数据库中保存的用户配置文件中(将在登录后使用)或 cookie 中(不需要使用登录)。这将永远保留此设置 - 您的用户会很感激 :)

    【讨论】:

    • 好的,我认为这是我的错,我认为是 db 配置文件,但您能否解释一下 Session 何时重置?或者如何正确使用?
    • 会话超时是指用户会话在最后一次请求后中止之前的分钟数。它在 web.config(或 IIS 站点配置)中设置。默认情况下,会话存储在 InProc 中,这意味着每次重新启动应用程序都会清除会话(例如:当您将新的 dll 版本发布到 /bin 目录时)。您可以将会话状态存储在单独的进程(Windows 中的 SessionState 服务)或 SQL 数据库中的事件中。请msdn.microsoft.com/en-us/library/…看看MS对Session的评价 :)
    【解决方案2】:

    而不是使用 ASP.NET 中的内置 ProfileProvider 系统,你应该只使用你想在多次访问中持久化用户设置,你可以在会话中放置一个设置数据。也许包装在一个可序列化的对象中。

    会话被清除

    • 你在你的代码中清除它
    • 存储 sessionid 的 cookie 过期(取决于您在 web.config 中的设置)(如果 cookie 在会话期间过期,在用户关闭所有浏览器窗口之前它并没有真正过期)
    • 如果应用程序重新启动(除非您使用粘性会话(基于数据库的会话),在这种情况下,会话数据会在应用程序重新启动时持续存在)

    【讨论】:

      【解决方案3】:

      初始化新控制器时会话不会重置。但是当您离开应用程序(您的会话结束)或应用程序重新启动时,它会发生。您应该使用 Profile 来存储此类信息。

      看到这个: http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx http://www.odetocode.com/articles/440.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-01
        相关资源
        最近更新 更多