-1

我通过以下语法将一些信息存储在我的网站(mvc3-.net4-iis7)中:

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

并通过这个读取数据:

 HttpContext.Current.Application[appKey];

它工作正常,但在很短的时间(大约 20 分钟)后它不起作用并且找不到 [appKey],我想知道它是否有一些设置要做或者它是否过期?

我在 web.config 中将我的 cookie 过期时间更改为 7 天,但还没有工作。

谢谢你的帮助

4

2 回答 2

2

这些值存储在内存中。如果应用程序被 IIS 回收,AppDomain 将关闭,并且您存储在内存中的所有内容都会丢失。不要忘记 IIS 可以随时回收您的应用程序。例如,如果满足某些内存/CPU 阈值。因此,如果您在应用程序被回收后尝试读取该值而不设置它,它将不存在。

因此,您应该考虑使用更持久的位置来存储这些信息,而不是将其存储在内存中。

我在 web.config 中将我的 cookie 过期时间更改为 7 天,但还没有工作。

您存储在应用程序状态中的值与 cookie 无关。它们存储在服务器上。

于 2012-09-17T15:26:40.663 回答
0

这与您的 cookie 无关,HttpContext.Current 由您的会话确定,默认为 20 分钟。

您可以通过在 web.config 中设置来增加时间:

<configuration>
… some config here …
<system.web>
  <sessionState timeout="XXX" />
…some more config
</system.web>
</configuration>

正如达林所说,值得注意的是,你的方法是否真的是你应该做的。

于 2012-09-17T15:28:44.390 回答