MVC 3 - 无会话控制器数据存储选项

时间:2012-06-04 14:12:12

标签: asp.net-mvc data-storage session-less

我最近一直在阅读无会话控制器,这似乎是一个有趣的想法,因为它improves perfomance并让ajax调用是异步的,通常它们应该是。

但是,我无法想出一种存储以前由会话存储的数据的好方法。我有很多单次获取数据,我得到一次,并通过几个页面走过它。我的第一个想法是使用MemoryCache,但读这个post我开始怀疑它,因为IIS可以随时放弃我的数据。

因此,我对如何在会话中存储数据方面感到有些困惑。我读了一些关于NoSQL和MongoDB的内容,但这不一定与我需要的时候获取数据一样吗?

您能否给我一些可用作临时数据存储区的说明和技术?

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用HttpContext.Cache?正如您在会话中所说的那样,没有理由不能根据当前请求的sessionid创建缓存密钥:

// cache key
var cacheKey = string.Format("{0}-{1}", "SomeKey", Session.SessionID);

// save to cache
HttpContext.Cache.Insert(cacheKey, <yourobject>, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20));

从那里开始,只需要传递sessionid并在以后检索:

HttpContext.Cache[cacheKey]