在使用C# MVC Web API时,使用HttpActionExecutedContext存在缓存问题。

3

我面临人生中最糟糕和尴尬的问题。

我正在使用 HttpActionExecutedContext 来缓存我的 WEB API 端点。

我的 WEB API 在缓存方面运行良好,但当我更新数据并想要重置缓存时,问题就出现了。

问题1: 当我从服务器删除 bin 文件夹时,API 仍会向我发送数据。 (我在 Android 手机上使用 API,在删除 BIN 文件夹后测试了 2 部手机。在第一部手机中,即使在 BIN 删除后,API 仍然提供数据;在第二部手机中,API 提供部分数据,例如一个端点正在工作,但另一个端点没有工作)。 这是如何可能的?

问题2: 使用 HttpActionExecutedContext 时数据保存在何处?数据保存在应用程序池还是其他地方?

问题3: 如何清除 WEB API 的缓存。

以下是 WEB API 的代码。

public class CacheFilter : ActionFilterAttribute
{
    public int TimeDuration { get; set; }
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        actionExecutedContext.Response.Headers.CacheControl = new System.Net.Http.Headers.CacheControlHeaderValue
        {
            MaxAge = TimeSpan.FromMinutes(1440),
            MustRevalidate = true,
            Public = true
        };
    }
}

控制器代码

[HttpGet]
[Route("SubCategory")]
[CacheFilter()]
public string SubCategory()
{
   BAL_CAT_ALL obj = new BAL_CAT_ALL();
   var data = obj.GetAllSubCategory();
   return data;
}
1个回答

0
在向服务器发出请求时,如果数据已更新,请在您的请求中添加以下两个标头:
'Cache-Control','no-cache' 'Pragma','no-cache'
尝试一下,让我们知道问题是否已解决或者还存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接