0

我将数据存储在

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

并通过这个读取数据:

  HttpContext.Current.Application[appKey];

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

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

谢谢你的帮助

4

4 回答 4

3

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

  • 一个 SQL 数据库(如果价格过高,有很多免费的)
  • 一个 NoSQL 数据库(同样的东西,很多免费的,通常更容易用于键/值)
  • 文件(你也说过你不想要)
  • 某种外部内存缓存,a'la AppFabric 缓存或 memcached。
  • Cookies(大小有限,默认情况下不安全)
于 2012-09-17T18:13:27.557 回答
0

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

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

于 2012-09-17T18:15:54.343 回答
0

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

如何在 asp.net 中创建持久性 cookie?

ASP.NET 中的会话超时

于 2012-09-17T18:11:36.467 回答
0

您是否了解您决定存储在应用程序中的任何内容都将可供应用程序中的所有用户使用?

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

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

于 2012-09-17T20:30:32.453 回答