在以编程方式使缓存页面无效时,永远不会调用ValidateCacheOutput函数

时间:2017-01-03 09:01:55

标签: caching

我遇到了以编程方式使缓存页面无效的问题。

我编写了一个用于发布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,页面也会在预设的时间间隔内重新缓存。我想知道为什么它以这种方式工作,以及如何修改我的代码,以便在访问页面时调用上述事件处理函数。

1 个答案:

答案 0 :(得分:0)

很抱歉问题似乎是由Page_load函数中调用的Response.End()函数引起的。删除此代码行后,在访问页面时会正确调用事件处理函数。