我正在尝试在ASP NET WEB API2中实现ETags [实体标签]概念 使用CacheCow.server v 1.2.3。
这里的API是
[HttpGet]
[Route("api/ETags/GetTag")]
public async Task<IHttpActionResult> GetTag()
{
var result = SqlHelper.QuerySp<Role>("GetTestRoles", null, connectionString: ConfigurationManager.ConnectionStrings["Test"].ToString());
return await Task.FromResult(Ok(result)); // await Task.FromResult(result);
}
第一次运行,它给出200 OK,这很好。 下一次旅行给我304 Not Modified and cached resposne 这也很好。 但是我还有另一个API
[HttpGet]
[Route("api/ETags/PostTag")]
public async Task<IHttpActionResult> PostTag()
{
Random rnd = new Random();
int number = rnd.Next(1, 103);
var param = new DynamicParameters();
param.Add("@Id", number);
var result = SqlHelper.ExecuteSp("PostTestRole", param, connectionString: ConfigurationManager.ConnectionStrings["Test"].ToString());
return await Task.FromResult(Ok(result)); // await Task.FromResult(result);
}
此API将添加一条记录。
在WebApiConfig.cs
var cacheHandler = new CachingHandler(config);
config.MessageHandlers.Add(cacheHandler);
我的问题甚至是在角色集合中插入另一条记录之后。 我的第一个GET API的响应为304 Not Modified,而不是200 OK,其中包含最新的Role数据收集。
那么我该如何实现呢? 预先感谢