我有一个简单的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响应的缓存?
答案 0 :(得分:0)
您可以将ResponseCacheAttribute
添加到控制器,如下所示:
function getComboRefer(type, option) {
return (comboReferData.find(o => o.wagerType === type) || {})[option];
}
var comboReferData = [{ wagerType: 1, count: 2 }, { wagerType: 2, count: 11 }];
console.log(getComboRefer(2, 'count'))
您还可以将[ApiVersion("1.0")]
[Route("api/[controller]")]
[ApiController]
[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
public class TestScenariosController : Controller
{
...
}
添加为全局过滤器,如下所示:
ResponseCacheAttribute
这将禁用MVC请求的所有缓存,并且可以通过将services
.AddMvc(o =>
{
o.Filters.Add(new ResponseCacheAttribute { NoStore = true, Location = ResponseCacheLocation.None });
};
再次应用于所需的控制器/操作来针对每个控制器/操作来覆盖。
有关更多信息,请参见文档中的ResponseCache attribute。