asp.net – 是否可以迭代所有OutputCache密钥?

是否可以迭代OutputCache键?我知道你可以通过HttpResponse.RemoveOutputCacheItem()单独删除它们,但是有没有办法可以迭代所有键来查看集合中的内容?

我搜索了对象查看器,但没有看到任何内容.

最糟糕的情况是,我可以保持自己的索引.因为我正在通过VaryByCustom做所有事情,所以他们通过global.asax中的方法“获得”.我觉得必须有更优雅的方式来做到这一点.

最佳答案 如果您使用的是ASP.NET 4.0,则可以通过编写自己的
OutputCacheProvider来实现此目的.这样您就可以在项目缓存时存储密钥:

namespace StackOverflowOutputCacheProvider
{
    public class SOOutputCacheProvider: OutputCacheProvider
    {
        public override object Add(string key, object entry, DateTime utcExpiry)
        {
            // Do something here to store the key

            // Persist the entry object in a persistence layer somewhere e.g. in-memory cache, database, file system

            return entry;
        }

        ...

    }
}

然后,您就可以从存储它们的任何地方读取密钥.

点赞