2009-09-12 41 views
0

我应该如何将用户数据存储在asp.net mvc中?假设用户希望每页看到50条记录。我想将它保存在Session中,但是如果我正确地做到了这一点,则会话在每次新控制器初始化时都会重置。那么在哪里?一块饼干?asp.net mvc存储​​用户数据

回答

2

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

请考虑将其存储在数据库中保存的用户配置文件中(将在登录后使用)或存储在cookie中(不要求使用登录)。这将永远保持此设置 - 您的用户将明白:) :)

+0

好的,我认为这将是我的错,我尽管DB配置文件,但你能解释什么时候会话重置?或者如何正确使用它? – Trimack 2009-09-12 21:55:18

+0

会话超时指用户会话在上次请求后中止之前的分钟数。它在web.config(或IIS站点配置)中设置。 默认情况下,会话存储在InProc中,这意味着每次重新启动应用程序都会清除会话(例如:将新dll版本发布到/ bin目录时)。 您可以将会话状态存储在单独的进程(Windows中的SessionState服务)或SQL db中的事件中。 请take a look what MS says about Session :) – twk 2009-09-12 22:08:34

+0

这里的链接: http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.aspx – twk 2009-09-12 22:09:45

1

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

会话将被清除

  • 你清楚它在你的代码
  • 该cookie存储会话ID过期(取决于您的设置我的web.config)(如果会话期间 cookie过期,它没有真正到期用户关闭所有浏览器窗口前)
  • 如果重新启动应用程序(除非使用粘性会话(DB基于会话)在这种情况下,通过sessiondata应用程序重启仍然存在)