首页 > 解决方案 > 通过中间件在 asp.net 核心中的 NoCache、NoStore 和 must-revalidate 缓存标头

问题描述

我正在尝试在我添加了以下中间件的 asp.net core 3.1 的 web api 项目中添加 no-store must-revalidate no-cache

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLifetime)
        {
            if (env.IsDevelopment())
            {
                //app.UseDeveloperExceptionPage();
                app.UseExceptionHandler("/error-local-development");
            }
            else
            {
                app.UseExceptionHandler("/error");
            }
          
            app.Use((context, next) =>
            {
                context.Response.GetTypedHeaders().CacheControl =
                      new Microsoft.Net.Http.Headers.CacheControlHeaderValue()
                      {
                          NoCache = true,
                          NoStore = true,
                          MustRevalidate = true
                      };

                if (context.Request.Headers.TryGetValue("X-Forwarded-Prefix", out var value))
                    context.Request.PathBase = value.First();

                return next();
            });
.....
}

但是在我的 api 响应头上就像

access-control-allow-origin: * 
 cache-control: no-storemust-revalidateno-cache
 content-type: application/json; charset=utf-8 
 date: Fri12 Mar 2021 12:23:06 GMT 
 server: Microsoft-IIS/10.0 
 transfer-encoding: chunked 
 x-powered-by: ASP.NET 

任何人都可以帮助为什么要连接 headervalue 以及如何在它们之间添加空格

标签: asp.net-core

解决方案


PROblem 在 swagger ui 响应界面中。看起来它跳过了逗号。感谢 Fei Han 提示测试另一个项目


推荐阅读