0

我在我的ASP .NET核心應用程序中有多個控制器,我正在使用像這樣的ReponseCache屬性幾種方法:ASP.Net核心Web API - ResponseCache屬性沒有添加「緩存控制」標題的響應

//controller 
 
[Route("api/[controller]")] 
 
[EnableCors("CorsPolicy")] 
 
public class InsightsApiController : Controller 
 

 
//method  
 
[Route("CoursesTextContent")] 
 
[HttpGet] 
 
[DecryptFilter] 
 
[ResponseCache(Duration = 60)] 
 
public IActionResult GetCoursesContent(string locale, string tabKey, string widgetType)

,我遇到的問題是,一個控制器,這是工作的罰款,我可以看到在Chrome瀏覽器開發工具與響應「的Cache-Control:公衆最大年齡= 60」,但在不同的控制器中,當我添加此屬性時添加「Cache-Control:no-cache」。我比較了它們中的兩個控制器和方法,並將它們配置爲相同。我也嘗試添加ASP.NET Core中間件here,但結果相同。我正在從Angular2網頁調用這兩種方法。我可以從客戶端(請求)做些什麼?或在ASP.NET核心應用程序設置中的東西?

回答

0

我在我的ASNETCore的WebAPI項目的startup.cs文件中啓用會話中間件。我現在刪除了它,並且爲所有呼叫/控制器工作。不知道爲什麼它只會導致一個控制器的問題。

0

你缺少尾隨括號

[ResponseCache(Duration = 60] 

必須

[ResponseCache(Duration = 60)] 
+0

對不起,這是一個錯誤的問題,但我實際上已經在代碼中。 – MuazzamAli

+0

不用擔心。很奇怪的是,您可能會在不同的控制器中的兩種不同的操作方法上使用相同的ResponseCache屬性,並獲得不同的結果。也許你有一個操作過濾器或中間件來覆蓋'Cache-Control'頭並將其設置爲'no-cache'。 –

+0

本來我並沒有使用任何中間件,但是我嘗試從我的問題鏈接中添加它,但也沒有幫助。我嘗試了所有不同的選項(公共,私人,Vary ...),但結果相同。它很奇怪。 – MuazzamAli

相關問題