簡體   English   中英

如何禁用所有 WebApi 響應的緩存以避免 IE 使用(來自緩存)響應

[英]How to disable caching for all WebApi responses in order to avoid IE using (from cache) responses

我有一個簡單的 ASP.NET Core 2.2 Web Api 控制器:

[ApiVersion("1.0")]
[Route("api/[controller]")]
[ApiController]
public class TestScenariosController : Controller
{
   [HttpGet("v2")]
    public ActionResult<List<TestScenarioItem>> GetAll()
    {
        var entities = _dbContext.TestScenarios.AsNoTracking().Select(e => new TestScenarioItem
        {
            Id = e.Id,
            Name = e.Name,
            Description = e.Description,
        }).ToList();

        return entities;
    }
}

當我使用@angular/common/http從角度應用程序查詢此操作時:

this.http.get<TestScenarioItem[]>(`${this.baseUrl}/api/TestScenarios/v2`);

在 IE11 中,我只得到緩存的結果。

如何為所有 Web API 響應禁用緩存?

在此處輸入圖像描述

在此處輸入圖像描述

您可以將ResponseCacheAttribute添加到控制器,如下所示:

[ApiVersion("1.0")]
[Route("api/[controller]")]
[ApiController]
[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
public class TestScenariosController : Controller
{
    ...
}

或者,您可以將ResponseCacheAttribute添加為全局過濾器,如下所示:

services
    .AddMvc(o =>
    {
        o.Filters.Add(new ResponseCacheAttribute { NoStore = true, Location = ResponseCacheLocation.None });
    });

這將禁用 MVC 請求的所有緩存,並且可以通過再次將ResponseCacheAttribute應用於所需的控制器/操作來覆蓋每個控制器/操作。

有關詳細信息,請參閱文檔中的ResponseCache 屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM