我遇到了以编程方式使缓存页面无效的问题。
我编写了一个用于发布RSS-feed的页面,该页面在预设的时间间隔内缓存,比如3分钟。但是,当新的UMM消息被引发并保存到数据库时,该页面将被重新缓存。
对于此任务,我使用了MS文档中说明的关于"以编程方式使缓存页面无效的解决方案"。虽然我编写了以下函数:
public static void ValidateCacheOutput(HttpContext context, Object data, ref HttpValidationStatus status)
{
if (((bool)context.Application["IsNewUMMRaised"]) == true)
status = HttpValidationStatus.Invalid;
else
status = HttpValidationStatus.Valid;
}
并将以下代码添加到Page_load函数的开头。
Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(ValidateCacheOutput), null);
Following code is executed when a UMM is saved to database.
Application["IsNewUMMRaised"] = true;
问题是,当访问网页时,从不调用上述事件处理函数,即,即使应用程序变量IsNewUMMRaised
设置为true,页面也会在预设的时间间隔内重新缓存。我想知道为什么它以这种方式工作,以及如何修改我的代码,以便在访问页面时调用上述事件处理函数。
答案 0 :(得分:0)
很抱歉问题似乎是由Page_load函数中调用的Response.End()函数引起的。删除此代码行后,在访问页面时会正确调用事件处理函数。