2013-03-06 9 views
13

Sono quasi sicuro che "Expires" è un tipo di intestazione di risposta HTTP valido. Ma quando provo a metterlo nel mio codice: (questo è in un metodo ActionFilter.OnActionExecuted)Come aggiungere un'intestazione di risposta Expires a una risposta all'azione WebAPI?

actionExecutedContext.Response.Headers.Add("Expires", (DateTime.Now + Timespan.FromDays(7)).ToString("R")); 

io alla fine con un'eccezione:

InvalidOperationException: nome dell'intestazione abusato. Assicurati di utilizzare le intestazioni con HttpRequestMessage, le intestazioni di risposta con HttpResponseMessage e le intestazioni di contenuto con oggetti HttpContent.

risposta

22

Scade è un'intestazione di contenuto. Prova a modificare:

actionExecutedContext.Response.Content.Headers.Expires = DateTimeOffset.Now.AddDays(7); 
+0

Che cosa è un header Content HTTP ?? Non l'ho mai visto prima, e sembra uguale a tutti gli altri header nella mia risposta server .... –

+3

È lo stesso. Ma è solo un'intestazione che si riferisce al corpo del contenuto. Quindi il contenuto controlla quelle intestazioni. –

+0

@YoussefMoussaoui Ottengo 'Scade: -1' indietro quando provo questo. – Azimuth

0

Prova

response.Content.Headers.Expires = DateTimeOffset.Now.AddDays(7); 
Problemi correlati