清除Web服务WebMethod的OutputCache

时间:2017-07-20 13:06:23

标签: c# asp.net-mvc web-services webmethod

我有一个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缓存的密钥。

1 个答案:

答案 0 :(得分:1)

一种选择是减少CacheDuration CacheTest(比如10秒)。然后更改CacheTest以在内部使用MemoryCache,缓存持续时间设置为300(就像现在一样)。

如果要从缓存中删除项目,请将其从MemoryCache中删除。然后,在10秒内(或您设置CacheDuration的任何内容),您的网络服务将反映最近的任何更改。