Sto provando a impostare le intestazioni della cache nell'API Web MVC di ASP.NET, ma la risposta di IIS suggerisce che i valori CacheControl vengono ignorati.Le intestazioni di Cache-Control non vengono inviate in risposta nonostante siano configurate sull'oggetto risposta
Il mio presupposto originale era che stavo usando EnableCorsAttribute in System.Web.Http.Cors, che è necessario in questo caso d'uso. Tuttavia, anche senza quell'attributo, l'intestazione di Cache-Control di risposta è ancora "privata".
C'è qualcosa che sto facendo male qui?
// GET api/<version>/content
// [EnableCors(origins: "*", headers: "*", methods: "*")]
public HttpResponseMessage Get(HttpRequestMessage request)
{
int cacheMaxAgeSeconds;
string cacheMaxAgeString = request.GetQueryString("cache-max-age") ?? request.GetQueryString("cache-max-age-seconds");
string rawUri = request.RequestUri.ToString();
try
{
cacheMaxAgeSeconds = cacheMaxAgeString == null ? Config.ApiCacheControlMaxSeconds : int.Parse(cacheMaxAgeString);
}
catch (Exception ex)
{
cacheMaxAgeSeconds = Config.ApiCacheControlMaxSeconds;
//...
}
try
{
//...
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("...", Encoding.UTF8, "application/json")
};
response.Headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = TimeSpan.FromSeconds(cacheMaxAgeSeconds)
};
return response;
}
catch (Exception apiEx)
{
//...
}
}
risposta
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Date: Thu, 23 Jul 2015 10:53:17 GMT
Server: Microsoft-IIS/7.5
Set-Cookie: ASP.NET_SessionId=knjh4pncbrhad30kjykvwxyz; path=/; HttpOnly
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 2367
Connection: keep-alive
c'è un motivo si sta cercando di rotolare il proprio qui sopra qualcosa come https://github.com/filipw/AspNetWebApi-OutputCache? – BMac
Sì, desidero effettivamente che il chiamante sia in grado di specificare il periodo di cache. Il valore viene letto dalla stringa di query e viene inserito nei valori dell'intestazione del controllo della cache. – gb2d
hmm, se qualcuno saprà che la risposta a questo sarà https://twitter.com/filip_woj (creatore del pacchetto nuget sopra) potrebbe valere la pena di contattarlo su Twitter. – BMac