Я пытаюсь кэшировать ответ на запросы конечной точки webapi.ДелегированиеHandler для кэширования HttpResponseMessage
Я создал делегацию, которая коротко замыкает конвейер, повторно использующий ранее сгенерированный ответ, и он не работает.
Что я делаю неправильно? или как я могу сделать это правильно?
Это мой DH:
public class StuffCache : DelegatingHandler
{
public const string URL_CACHED = @"/stuff-endpoint/items";
ObjectCache cache = MemoryCache.Default;
public StuffCache()
{
cache = MemoryCache.Default;
}
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request.Method == HttpMethod.Get)
{
if (request.RequestUri.AbsolutePath.ToLower() == URL_CACHED)
{
HttpResponseMessage response = (HttpResponseMessage)cache["CachedItemName"];
if (response == null)
{
response = await base.SendAsync(request, cancellationToken);
cache.Add("CachedItemName", response, null);
}
return response;
}
}
return await base.SendAsync(request, cancellationToken);
}
}
Кэшированные ответные заголовки? – Legends
Весь ответ, все –
Да, но вы должны добавить заголовки ответа кэша, прежде чем кэшировать весь ResponseMessage! – Legends