从asp.net中的自定义缓存输出提供程序中删除特定页

从asp.net中的自定义缓存输出提供程序中删除特定页,asp.net,outputcache,Asp.net,Outputcache,我正在使用asp.NET4.0(WebFormsWebsite),并实现了一个自定义的基于磁盘的输出提供程序,它可以很好地缓存网站上的页面。然而,我遇到的问题是,我无法找到从缓存中删除特定页面的方法,我怀疑这是Url重写的问题 例如,如果我有一个名为test.aspx的页面,我可以使用以下方法轻松将其从缓存中删除: HttpResponse.RemoveOutputCacheItem("/test.aspx"); 这不适用于通过id缓存输出的页面,尽管eg被重写为 我可以看到页面的缓存版本,但

我正在使用asp.NET4.0(WebFormsWebsite),并实现了一个自定义的基于磁盘的输出提供程序,它可以很好地缓存网站上的页面。然而,我遇到的问题是,我无法找到从缓存中删除特定页面的方法,我怀疑这是Url重写的问题

例如,如果我有一个名为test.aspx的页面,我可以使用以下方法轻松将其从缓存中删除:

HttpResponse.RemoveOutputCacheItem("/test.aspx");
这不适用于通过id缓存输出的页面,尽管eg被重写为

我可以看到页面的缓存版本,但无法将其从磁盘缓存中删除,因为我需要一个绝对虚拟路径,以便RemoveOutputCacheItem正常工作。我尝试了以下方法:

HttpResponse.RemoveOutputCacheItem("/myfolder/Page.aspx?id=1");
HttpResponse.RemoveOutputCacheItem("/myfolder/page/1");
还有很多其他的变化,但似乎都不起作用

尝试使用RemoveOutputCacheItem时,url的缓存键与存储的键a2_myfolder_page.aspxHQNidV1FCDE不匹配


有什么解决办法吗?或者以另一种方式将特定的缓存页逐出?谢谢

您是否尝试过使用VaryByParam或VaryByCustom,并使用“id”作为自定义标识符:

您是否尝试过使用VaryByParam或VaryByCustom,并使用“id”作为自定义标识符:

我已经在page.aspx的输出页面指令中使用VaryByParam,并且所有版本都已正确缓存,例如id=1,id=2等。RemoveOutputCacheItem不适用于任何重写的URL。我已经在page.aspx的输出页面指令中使用了VaryByParam,并且所有版本都已正确缓存,例如id=1、id=2等。RemoveOutputCacheItem不适用于任何重写的URL。