Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缓存Asp.NETWebAPI_C#_Caching_Asp.net Web Api_Asp.net Web Api2 - Fatal编程技术网

C# 缓存Asp.NETWebAPI

C# 缓存Asp.NETWebAPI,c#,caching,asp.net-web-api,asp.net-web-api2,C#,Caching,Asp.net Web Api,Asp.net Web Api2,我试图在我正在实现的api中捕获一个方法。我已经创建了一个基于本文()的属性 我直接从chrome调用这个方法。但是服务器总是在执行查询,我不能让服务器返回NotModified。我做错了什么 ---------------------------------------------------------------编辑-------------------------------------------------------------- 以下是我通话的标题: 但是,Web API当前不支

我试图在我正在实现的api中捕获一个方法。我已经创建了一个基于本文()的属性

我直接从chrome调用这个方法。但是服务器总是在执行查询,我不能让服务器返回NotModified。我做错了什么

---------------------------------------------------------------编辑-------------------------------------------------------------- 以下是我通话的标题:


但是,Web API当前不支持输出缓存,有人已经不辞辛劳地构建了一个库,它可以完全满足您的需要-。

您是否检查了标题以查看Web Api返回了什么?@DavidG我添加了标题捕获。我注意到,Web Api中的输出缓存与设置标题一样简单,有人已经自由地制作了一个支持它的。@jvrdelafuent您的浏览器正在发送
缓存控制:max age=0
,这实际上是在告诉服务器
我的数据过时了,给我一些新的东西
由@James链接的库看起来很完整,我想先试试。
[Route("")]
[CacheControl(MaxAge = 160)]
public IEnumerable<Club> GetAll()
{
    return _clubService.GetAll();
}
public class CacheControlAttribute : ActionFilterAttribute
{
    public int MaxAge { get; set; }

    public CacheControlAttribute()
    {
        MaxAge = 160;
    }

    public override void OnActionExecuted(HttpActionExecutedContext context)
    {
        context.Response.Headers.CacheControl = new CacheControlHeaderValue
        {
            Public = true,
            MaxAge = TimeSpan.FromSeconds(MaxAge)
        }; 

        base.OnActionExecuted(context);
    }
}