在ASP.net Web API中设置自己的缓存控制头

本文关键字:自己的 缓存 控制 设置 ASP net Web API | 更新日期: 2023-09-27 17:53:47

我有以下代码:

public class CacheHeader : OwinMiddleware
{
    public CacheHeader(OwinMiddleware next)
        : base(next)
    {
    }
    public override async Task Invoke(IOwinContext context)
    {
        context.Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate";
        context.Response.Headers["Pragma"] = "no-cache";
        context.Response.Headers["Expires"] = "0";
        await Next.Invoke(context);
    }
}

这应该已经改变了Http缓存控制头有"无存储,无缓存",但当我检查它在Chrome开发工具,我得到以下内容:

Cache-Control:no-cache
Connection:keep-alive
Host:10.0.211.202
Pragma:no-cache

是否有一个原因,我不能改变什么是在cache-control从无缓存到无缓存,无存储?

在ASP.net Web API中设置自己的缓存控制头

确保在注册web api之前介绍您的中间件:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = new HttpConfiguration();
        app.Use((context, next) =>
        {
            context.Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate";
            context.Response.Headers["Pragma"] = "no-cache";
            context.Response.Headers["Expires"] = "0";
            return next.Invoke();
        });
        app.UseWebApi(config);
    }
}

只是猜测。您是否尝试在next.Invoke()之后设置响应头?