我通过以下语法在我的网站(mvc3-.net4-iis7)中存储了一些信息:
HttpContext.Current.Application.Add(appKey, value);
并通过以下方式读取数据:
HttpContext.Current.Application[appKey];
它工作正常,但在很短的时间(约20分钟)后,它工作没有,找不到[appKey],我想知道 有一些设置要做还是过期?
我在我的web.config中将我的cookie过期时间更改为7天但尚未正常工作。
感谢您的帮助
答案 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>
值得注意的是,正如达林所说,无论你的方法是否实际上都是你应该做的事情。