我有一个Web服务,其中包含使用CacheDuration
缓存的方法:
[WebMethod(CacheDuration = 300)]
public bool CacheTest()
{
return true;
}
在ASP.NET MVC项目中又调用了它:
[HttpGet]
public IHttpActionResult Test()
{
var cacheResult = _testWebService.Test();
return Ok(cacheResult.ToString());
}
我希望能够从我的Web服务或ASP.NET MVC项目中清除CacheTest
的缓存。
我已经研究过使用HttpResponse.RemoveOutputCacheItem
,但是,似乎只清除了Test
控制器方法的缓存而不是CacheTest
Web服务方法。
我也尝试使用HttpContext.Current.Cache.Remove()
,但我没有CacheTest
缓存的密钥。
答案 0 :(得分:1)
一种选择是减少CacheDuration
CacheTest
(比如10秒)。然后更改CacheTest
以在内部使用MemoryCache
,缓存持续时间设置为300(就像现在一样)。
如果要从缓存中删除项目,请将其从MemoryCache
中删除。然后,在10秒内(或您设置CacheDuration
的任何内容),您的网络服务将反映最近的任何更改。