Asp.net
.NET Core 中的 HttpContext.Response.Cache 等效項?
我正在嘗試為以前版本的 ASP.NET 重現我在此處找到的內容。
基本上,我希望能夠禁用記憶體,以便我的客戶始終查看伺服器以獲取資訊。我為此添加了一個 HTML 元標記,但對於已經擁有此資訊的客戶端,我想嘗試在後端處理記憶體策略。
該文章提到這樣做是為了將記憶體策略設置為操作過濾器。
public class NoCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); filterContext.HttpContext.Response.Cache.SetNoStore(); base.OnResultExecuting(filterContext); } }但是,HttpContext 在 ASP.NET Core 中似乎沒有 Response.Cache。有沒有其他方法可以做到這一點?
謝謝!
您可以直接將相應的響應標頭設置為所需的值:
public class NoCacheAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate"; filterContext.HttpContext.Response.Headers["Expires"] = "-1"; filterContext.HttpContext.Response.Headers["Pragma"] = "no-cache"; base.OnResultExecuting(filterContext); } }
您可以使用建構屬性控制它:
[ResponseCache (NoStore = true, Location = ResponseCacheLocation.None)]