I am playing with .NET 8 new Aspire feature.
Here is my code
Program.cs at AppHost project
var builder = DistributedApplication.CreateBuilder(args); var cache = builder.AddRedisContainer("rediscache"); builder.AddProject<Projects.WeatherApp_Web>("frontend") .WithReference(cache)
In her is service registration in
Program.cs of frontend project:
var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.AddRedisOutputCache("rediscache"); etc...
And app usage:
var app = builder.Build(); app.UseOutputCache(); etc...
And of course, in my Razor page class, the duration is set to 5 seconds, only for testing.
[OutputCache(Duration = 5)]
The issue is that the content of the page is updating always and not showing the caching results. There is no error. What can I do to fix this?
I have recently working on something similar and faced the same issue.
To get the cache working, you need to call
app.UseOutputCache(); after routing
app.UseRouting(); which is somewhere in your
Programs.cs in your frontend project.
So your code should be something like
var app = builder.Build(); etc... app.UseRouting(); app.UseOutputCache(); etc...
And it will work.
I was able to find this information in Microsoft documentation.
In Razor Pages apps and apps with controllers, UseOutputCache must be
called after UseRouting.