2013-12-19 19 views
3

我試圖在Web API響應中設置最後修改的日期/ etag。無法在IIS7.5上的.net Web API中設置Last-Modified/Etag標頭

 response.Headers.ETag = new EntityTagHeaderValue("\"1\""); 
     response.Content.Headers.LastModified = DateTime.Now.AddDays(-1); 
     return response; 

不過,如果我主持的是IIS它不工作,但如果我試圖調試和視覺工作室vs2012打API主機(當我嘗試調試),我得到的值返回。

任何人有任何建議嗎?我認爲它與IIS上的配置有關,但我無法弄清楚。

響應頭同時擊中API從IIS7.5

Cache-Control →no-cache 
Content-Length →2399 
Content-Type →application/json; charset=utf-8 
Date →Thu, 19 Dec 2013 07:03:18 GMT 
Expires →-1 
Pragma →no-cache 
Server →Microsoft-IIS/7.5 
X-AspNet-Version →4.0.30319 
X-Powered-By →ASP.NET 

響應頭託管同時擊中API從vs2012調試託管

Cache-Control →no-cache 
Content-Length →2399 
Content-Type →application/json; charset=utf-8 
Date →Thu, 19 Dec 2013 07:07:22 GMT 
Expires →-1 
Last-Modified →Wed, 18 Dec 2013 07:07:22 GMT 
Pragma →no-cache 
Server →Microsoft-IIS/8.0 
X-AspNet-Version →4.0.30319 
X-Powered-By →ASP.NET 
X-SourceFiles →=?UTF-8?B?QzpcU291cmNlXGFwbVxzcmNcc2VydmljZXNcV2Vic2VydmljZXNcQ0lTXGFwbVxwcm9wZXJ0eWRhdGFcYXV0b3N1Z2dlc3RcdjFcZnJlZXRleHQ=?= 
+0

這必須是一個IIS配置問題。什麼HttpModules安裝在IIS中? –

回答

3

最後我想出了自己。

我們需要啓用,以便在高速緩存控制設置這些報頭中的.NET Web API

response.Headers.CacheControl = new CacheControlHeaderValue(); 
    response.Headers.CacheControl.Public = true; 

我想這是因爲這些頭在HTTP協議,這就是爲什麼.NET強制執行相關的緩存在框架中。

-2

嘗試設置響應頭使用當前HttpContext -

HttpContext.Current.Response.AddHeader("Last-Modified", DateTime.Now.AddDays(-1).ToString()); 
+0

它不起作用。我累 –

+0

Web API不使用HttpContext。 –

相關問題