2013-03-06 90 views
13

我很確定「過期」是有效的HTTP響應頭類型。但是,當我試圖把它在我的代碼(這是一個ActionFilter.OnActionExecuted法)如何將Expires響應標頭添加到WebAPI Action響應中?

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

我結束了一個例外:

出現InvalidOperationException:誤用頭名。確保請求 標頭與HttpRequestMessage一起使用,帶有 HttpResponseMessage的響應標頭以及帶有HttpContent對象的內容標頭。

回答

22

Expires是一個內容標題。試試這個:

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

什麼是HTTP內容頭?我從來沒有見過它,它看起來與我的服務器響應中的所有其他標頭一樣。...... – 2013-03-06 22:38:52

+3

它是一樣的。但它只是一個與內容主體相關的標題。所以內容控制這些標題。 – 2013-03-06 22:48:25

+0

@YoussefMoussaoui當我嘗試這個時,我得到'Expires:-1'。 – Azimuth 2017-08-24 12:39:05

0

嘗試

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