2013-03-06 3 views
13

Ich bin mir ziemlich sicher, dass "Expires" ist gültig HTTP Response Header Typ. Aber wenn ich versuche, es in meinem Code zu setzen: (dies ist in einer ActionFilter.OnActionExecuted Methode)Wie fügen Sie einen Expires-Antwortheader zu einer WebAPI-Aktionsantwort hinzu?

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

ich mit einer Ausnahme am Ende:

InvalidOperationException: mißbraucht Headernamen. Stellen Sie sicher, dass Header mit HttpRequestMessage, Antwortheader mit HttpResponseMessage und Inhaltsheader mit HttpContent-Objekten verwendet werden.

Antwort

22

Expires ist ein Inhaltsheader. Versuchen Sie stattdessen:

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

versuchen Was ist ein HTTP-Content-Header ?? Ich habe es noch nie zuvor gesehen, und es sieht genauso aus wie alle anderen Header in meiner Serverantwort .... –

+3

Es ist das gleiche. Aber es ist nur ein Header, der sich auf den Inhalt bezieht. Der Inhalt steuert also diese Header. –

+0

@YoussefMoussaoui Ich bekomme 'Expires: -1' zurück, wenn ich das versuche. – Azimuth

0

response.Content.Headers.Expires = DateTimeOffset.Now.AddDays(7); 
Verwandte Themen