我有一个运行在IIS 7.5上的ASP MVC 3网站,我不能阻止它缓存。防止在IIS 7.5上运行的ASP MVC网站缓存
我已经通过向网站添加'* Do Not Cache'条目来禁用IIS中的输出缓存,并在结果执行上在控制器上添加了一个操作筛选器,以防止缓存(请参见下面的代码),但是当我使用该网站,它仍然是缓存。我从Internet Explorer和Firefox删除了所有历史记录和Cookie等,但我仍然看到旧数据。
有没有人有任何想法或建议,我可以做什么来尝试和预防呢?
由于提前,
詹姆斯
UPDATE
我进一步挖掘使用SQL事件探查器,它似乎是SQL服务器缓存查询。情况会是这样吗?
月2日更新
我现在知道,如果不definitley SQL缓存,现在看到的IIS和MVC
解决!
这是NHibernate!
它对每个呼叫使用相同的会话而不是每个请求的会话。
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation (HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
你完全确信数据本身不仅仅是旧的吗?我很确定MVC不会仅仅默认缓存所有内容。我不记得曾经遇到过这个问题 – Jimmy 2011-05-12 13:13:50
嗨吉米 - 是的,我确定。数据得到更新,我可以看到,在SQL使用管理工作室,但该网站仍然显示旧数据。 – 2011-05-12 13:17:43
吉米是对的。 MCV不应该默认缓存,IIS也不应该缓存。你能更具体地说明你在做什么吗?你的代码执行什么操作?你期望发生什么? – rciq 2011-05-12 13:29:24