为什么HttpContext.Current不起作用?

时间:2012-09-17 15:24:41

标签: asp.net-mvc-3

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

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

并通过以下方式读取数据:

 HttpContext.Current.Application[appKey];

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

我在我的web.config中将我的cookie过期时间更改为7天但尚未正常工作。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

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

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

  

我在我的web.config中将我的cookie过期时间更改为7天但尚未正常工作。

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

答案 1 :(得分:0)

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

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

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

值得注意的是,正如达林所说,无论你的方法是否实际上都是你应该做的事情。