按键和值存储数据的方法是什么?

时间:2012-09-17 18:07:47

标签: asp.net-mvc-3

我将数据存储在

    HttpContext.Current.Application.Add(appKey, value);

通过这个读取数据:

  HttpContext.Current.Application[appKey];

这对我来说有一个优点,即使用键值但是在短时间(大约20分钟)后它不起作用,我找不到[appKey],因为iis数据中的应用程序生命周期将会失去。 我想知道另一种按键和值存储数据的方法吗? 我不想要sql server,file,...并希望在服务器上存储数据而不是客户端

我将用户的一些数据存储在其中。

感谢您的帮助

4 个答案:

答案 0 :(得分:3)

由于IIS可以随时回收并丢弃任何缓存/内存内容,因此保留数据的唯一方法是将其存储在IIS之外。一些例子是; (是的,我收录了你说过你并不想让列表更完整的那些,随意跳过它们)

  • 一个SQL数据库(如果价格过高,有很多免费的数据库)
  • 一个NoSQL数据库(同样的东西,很多免费的,通常更容易用于键/值)
  • 文件(你也说过你不想要)
  • 某种外部内存缓存,一个AppFabric缓存或memcached。
  • Cookies(大小有限,默认情况下不保证任何安全)

答案 1 :(得分:0)

您可以在用户的​​计算机上创建一个持久性cookie,以便会话不会过期,或者将会话超时增加到一个更适合您的情况/用户的值

How to create persistent cookies in asp.net?

Session timeout in ASP.NET

答案 2 :(得分:0)

您谈论的是将数据保留在会话范围之外。因此,您将不得不使用某种形式的持久存储(数据库,文件,缓存服务器)。

您是否考虑过使用AppFabric?它实际上很容易实现。您可以使用nuget包直接从代码访问它,也可以将其配置为会话存储。 (我认为)做后者意味着你要摆脱会话超时问题。

答案 3 :(得分:0)

您是否了解无论您决定在应用程序中存储什么内容,您的应用程序中的所有用户都可以使用?

现在关于您的实际问题,您计划存储哪种数据?如果是用户敏感数据,那么将它存储在会话中可能是有意义的。如果它是客户特定的并且它不包含任何敏感信息,那么cookie可能是合理的前进方式。

如果它确实是一个应用程序范围的数据,并且它对于您的应用程序的每个用户必须是相同的,那么您可以进行配置更改以确保它在20分钟后不会过期。