我需要根据查询字符串中的布尔值来决定是否缓存响应。不幸的是,我找不到这样的例子。你能帮我吗?
您可以为该场景创建一个自定义中间件,它从查询中读取布尔值,并根据该值缓存响应(无论是什么(。
您可以在这里阅读有关自定义中间件的信息。
您的中间件应该是这样的:
public class OptionalCachingMiddleware
{
private readonly RequestDelegate _next;
private readonly IServiceProvider _services;
public OptionalCachingMiddleware(RequestDelegate next, IServiceProvider services)
{
_next = next;
_services= services;
}
public async Task InvokeAsync(HttpContext context)
{
var shouldCache = bool.Parse(context.Request.Query["your-query-parameter-name"]);
if (shouldCache)
{
var responseCache = _services.GetRequiredService<IResponseCache>();
// put your caching logic here
}
// Call the next delegate/middleware in the pipeline
await _next(context);
}
}