0

我需要根据查询字符串中的布尔值来决定是否缓存响应。不幸的是,我找不到这样的例子。你能帮助我吗?

4

1 回答 1

0

您可以为该场景创建一个自定义中间件,该中间件从查询中读取布尔值并根据该值缓存响应(无论可能是什么)。

您可以在此处阅读有关自定义中间件的信息。

您的中间件应如下所示:

 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);
        }
    }
于 2021-11-15T14:53:50.940 回答