如何在控制器上使用带 [OutputCache] 的标签而不是最小 API

问题描述 投票:0回答:1

我们可以像 Minimal API 那样使用 Tag

.CacheOutput(x=x.Tag("people"));
这样我们就可以使用
IOutputCacheStore.EvictByTag("people");
.

但是当涉及到控制器时,我们必须使用没有'Tag'的

[CacheOutput]
属性。没有像
[CacheOutput(Tag="people)]
这样的用法,所以我不能使用
EvictByTag()
。我不想将我所有的控制器迁移到最小的 API。有没有办法将 Tag 与控制器一起使用?

c# .net-core outputcache .net-7.0
1个回答
0
投票

CacheOutput
构建应用于特定映射端点的缓存策略。您可以在为输出缓存添加服务时声明策略并将策略名称传递给属性:

builder.Services.AddOutputCache(options =>
    options.AddPolicy("PeopleTagPolicy", policyBuilder => policyBuilder.Tag("people")));

[OutputCache(PolicyName = "PeopleTagPolicy")]
public class PeopleController : ControllerBase
{

}
© www.soinside.com 2019 - 2024. All rights reserved.