我有一個傳統的C#Web服務(類繼承System.Web.Services.WebService
),象這樣一系列的WebMethods的:如何從.net Web服務設置HTTP緩存控制?
[WebMethod, SoapHeader("header", Direction=SoapHeaderDirection.In)]
[SoapDocumentMethod("http://www.myservices.com/Services/1.1#getMediaMetadata")]
public MediaMetadata getMediaMetadata(string id)
{
return new MediaService().GetMetadata(id);
}
我試圖設置Cache-Control頭經由HttpResponse.Cache.SetMaxAge
響應。執行服務產生一個默認的標題:
Cache-Control:private, max-age=0
我有一個硬編碼的頭所代替標準Cache.SetMaxAge
:
HttpContext.Current.Response.AddHeader("Cache-Control", "private, max-age=" + (int)ttl.TotalSeconds);
但仍然是Web服務器使用默認的Cache-Control響應。我懷疑在web方法執行後,ASP.NET web服務正在使用這種方法。以下建議使用WebMethod的CacheDuration屬性不適用於我的方案。
有什麼建議嗎?
我現在懷疑問題在於客戶端發佈到web方法的事實,並且HTTP規範說Cache-Control在POST上是不相關的。顯然asp.net忽略了SetMaxAge的調用。 – 2010-08-31 21:16:46