C# ASP.NET Core 2.0中的默认防伪禁用响应缓存

C# ASP.NET Core 2.0中的默认防伪禁用响应缓存,c#,caching,asp.net-core,C#,Caching,Asp.net Core,我正在尝试实现响应缓存,并在某些操作上禁用默认的防伪行为,但在我收到的每个请求上” 警告:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery[8] “缓存控制”和“Pragma”标头已被覆盖和设置 分别设置为“无缓存、无存储”和“无缓存”,以防止缓存 任何使用防伪药物的反应都不应该 缓存 我在操作上定义了IgnoreAntiforgeryToken。是否有其他方法关闭默认的防伪功能 Startup.cs: public voi

我正在尝试实现响应缓存,并在某些操作上禁用默认的防伪行为,但在我收到的每个请求上”

警告:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery[8] “缓存控制”和“Pragma”标头已被覆盖和设置 分别设置为“无缓存、无存储”和“无缓存”,以防止缓存 任何使用防伪药物的反应都不应该 缓存

我在操作上定义了IgnoreAntiforgeryToken。是否有其他方法关闭默认的防伪功能

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    .
    .
    .
    services.AddResponseCaching();

    services.AddMvc(options =>
            {
                options.CacheProfiles.Add("Default",
                    new CacheProfile()
                    {
                        Duration = 240
                    });
                options.CacheProfiles.Add("NoCache",
                    new CacheProfile()
                    {
                        Location = ResponseCacheLocation.None,
                        NoStore = true
                    });
            })
            .AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
            .AddDataAnnotationsLocalization();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    .
    .
    .
    app.UseResponseCaching();
}
[IgnoreAntiforgeryToken]
[ResponseCache(CacheProfileName = "Default", VaryByQueryKeys = new string[] { "id" })]
[HttpGet("/Shop/Category/{id:int}", Name = "Category")]
public IActionResult Category(int id)
{
    var result = this.AppHelper.ModelHelper.GetCategoryWrap(id);

    return View(result);
}
控制器.cs

public void ConfigureServices(IServiceCollection services)
{
    .
    .
    .
    services.AddResponseCaching();

    services.AddMvc(options =>
            {
                options.CacheProfiles.Add("Default",
                    new CacheProfile()
                    {
                        Duration = 240
                    });
                options.CacheProfiles.Add("NoCache",
                    new CacheProfile()
                    {
                        Location = ResponseCacheLocation.None,
                        NoStore = true
                    });
            })
            .AddViewLocalization(Microsoft.AspNetCore.Mvc.Razor.LanguageViewLocationExpanderFormat.Suffix)
            .AddDataAnnotationsLocalization();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    .
    .
    .
    app.UseResponseCaching();
}
[IgnoreAntiforgeryToken]
[ResponseCache(CacheProfileName = "Default", VaryByQueryKeys = new string[] { "id" })]
[HttpGet("/Shop/Category/{id:int}", Name = "Category")]
public IActionResult Category(int id)
{
    var result = this.AppHelper.ModelHelper.GetCategoryWrap(id);

    return View(result);
}

iirc
IgnoreAntiforgerToken
属性用于回调(当表单发布回Web服务器时)…这可能是因为添加了antiforgery令牌,因为您的视图中有一个表单。在这种情况下,响应不应兑现,否则antiforgery令牌不起作用。您应该使用`asp antiforgery=“false”“`tag helper on the
标记以在每个表单上禁用它basisiirc
IgnoreAntiforgerToken
属性用于回调(当表单发布回Web服务器时)。。这可能是因为你的视图中有一个表单,所以添加了防伪标记。在这种情况下,响应不应兑现,否则反伪造代币不起作用。您应该在
标记上使用`asp antiforgery=“false”`tag helper来按表单禁用它