.NET 8中的Redis缓存不起作用?

xmq68pz9  于 4个月前  发布在  Redis
关注(0)|答案(1)|浏览(65)

我正在玩.NET 8新的Aspire功能。
我在一个带有Razor页面的应用程序上使用了Redis缓存,并在这个例子中使用了注册来注册该高速缓存。
下面是我在AppHost项目中的代码Program.cs

var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddRedisContainer("rediscache");
builder.AddProject<Projects.WeatherApp_Web>("frontend")
    .WithReference(cache)

字符串
这里是前端项目Program.cs中的服务注册:

var builder = WebApplication.CreateBuilder(args);
builder.AddServiceDefaults();
builder.AddRedisOutputCache("rediscache");
etc...


和应用程序使用情况:

var app = builder.Build();
app.UseOutputCache();
etc...


当然,在我的Razor页面类中,持续时间设置为5秒,仅用于测试。

[OutputCache(Duration = 5)]


问题是页面的内容总是更新,而不显示缓存结果。没有错误。我可以做些什么来解决这个问题?

cwtwac6a

cwtwac6a1#

我最近在做类似的事情,也遇到了同样的问题。
要让该高速缓存工作,您需要在路由app.UseRouting();(位于前端项目的Programs.cs中)之后调用app.UseOutputCache();
所以你的代码应该是这样的

var app = builder.Build();

etc...

app.UseRouting();
app.UseOutputCache();

etc...

字符串
它会起作用的。
我可以在Microsoft文档中找到这些信息。
在Razor Pages应用程序和带控制器的应用程序中,必须在路由选择后调用路由选择OutputCache。

相关问题