2014-07-18 4 views
2

Я пытаюсь поймать метод в api, который я реализую. Я создал атрибут, основанный на этой статье (http://www.codeproject.com/Articles/682296/Setting-Cache-Control-HTTP-Headers-in-Web-API-Cont).Кэширование Asp. Net Web Api

[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); 
    } 
} 

Я звоню непосредственно этот метод из хрома. Но сервер всегда выполняет запрос, и я не могу вернуть сервер Not Notified. Я делаю что-то неправильно?

---------------------------------------------- -----------------РЕДАКТИРОВАТЬ-------------------------------- ------------------------------ это заголовок моего звонка:

enter image description here

+0

Вы проверили заголовки, чтобы увидеть, что Web Api возвращается? – DavidG

+0

@DavidG Я добавил захват заголовков. – jvrdelafuente

+0

Я уверен, что выходное кэширование в веб-API так же просто, как установка заголовка, кто-то уже успел создать библиотеку (https://github.com/filipw/AspNetWebApi-OutputCache), которая поддерживает Это. – James

ответ

1

кэширование вывода в настоящее время не поддерживается веб-API, однако кто-то уже столкнулся с проблемой создания библиотеки, которая делает именно то, что вам нужно - AspNetWebApi-OutputCache.