我在我的控制器中有一个webapi端点,如下所示:
[HttpGet]
public IHttpActionResult GetPerson(
string term = null,
string workspace = null)
{
try
{
logger.Info("AvPerson start: " + DateTime.Now);
if (term == null)
{
return BadRequest();
}
ICoreAVData api = MvcApplication.Container.Resolve<ICoreAVData>();
List<Person> persons = new List<Person>();
persons.AddRange(api.GetAllPersonsForTerm(term, workspace));
if (persons == null)
{
return NotFound();
}
return Ok(persons);
}
catch (Exception)
{
return InternalServerError();
}
}term参数可以不断变化,但workspace参数会显示与用户相关的内容。用户不会离开自己的工作区,因此从用户的角度来看,该参数将是常量。
我想知道是否可以基于工作区参数进行CacheCow缓存。即。如果为workpace1,则缓存它,如果为workspace2,则单独缓存它。
我认识到,我必须添加某种逻辑来使特定于工作区缓存无效。我不是在问这个问题,因为我相信我知道该怎么做。我想知道每个工作区参数是否可以有一个单独的缓存项。
以下是我对此控制器的路由设置:
config.Routes.MapHttpRoute(
name: "avperson",
routeTemplate: "api/v1/avperson/{action}/{id}",
defaults: new { controller = "avperson", id = RouteParameter.Optional }
);有什么想法吗?
发布于 2017-05-17 21:45:46
因此,解决方案是更改路由。
config.Routes.MapHttpRoute(
name: "avperson",
routeTemplate: "api/v1/{workspace}/avperson/{action}/{id}",
defaults: new { controller = "avperson", workspace = "all", id = RouteParameter.Optional }
);这样做将为每个工作区创建一个单独的缓存条目,然后可以根据需要进行验证或使其无效。
https://stackoverflow.com/questions/44012308
复制相似问题