这里奇怪的问题。在 asp.net webforms (4.5 / 4.7) 的本地开发中,我发现 httpruntime.Cache 始终为空,即使设置正确也是如此。我在另一个 iis express 工作站上进行了尝试,发现了相同的行为,即使使用测试仪单页网页也是如此。生产 IIS 7.5 中的同一页面可以工作,并且正在从缓存中存储和交付。具体代码如下,但我尝试了一个在 httpruntime.Cache 中存储一个简单字符串的测试器。
var cache = System.Runtime.Caching.MemoryCache.Default;
var luCacheKey = "lu_" + dsName;
var ic = HttpRuntime.Cache.Get(luCacheKey) as ICollection;
if (ic == null) {
并从测试仪
var item = HttpRuntime.Cache.Get("x");
if (item == null)
{
HttpContext.Current.Cache.Insert("x", "test" , null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration);
Response.Write("added to cache<br>");
}
else {
Response.Write("already in cache");
}
所以,我想知道 web.config 中是否有一些我可以查看的东西,或者这是预期的 IIS 快速行为?注意, System.runtime.Caching 确实可以正常工作。
var cache = System.Runtime.Caching.MemoryCache.Default;
var ic = cache[luCacheKey] as ICollection;
if (ic == null)
{
var filterCriteria = new BinaryOperator("LookupGroup", dsName, BinaryOperatorType.Equal);
var lookups = xpoSession.GetClassInfo(typeof(Lookups));
ic = xpoSession.GetObjects(lookups, filterCriteria, new SortingCollection(), 0, 0, false, false);
var cachePolicy = new System.Runtime.Caching.CacheItemPolicy() { AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(30) };
cache.Add(new System.Runtime.Caching.CacheItem(luCacheKey, ic), cachePolicy);