C# ASP.NET Core 2.0中的默认防伪禁用响应缓存
我正在尝试实现响应缓存,并在某些操作上禁用默认的防伪行为,但在我收到的每个请求上” 警告:Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery[8] “缓存控制”和“Pragma”标头已被覆盖和设置 分别设置为“无缓存、无存储”和“无缓存”,以防止缓存 任何使用防伪药物的反应都不应该 缓存 我在操作上定义了IgnoreAntiforgeryToken。是否有其他方法关闭默认的防伪功能 Startup.cs: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
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
标记以在每个表单上禁用它basisiircIgnoreAntiforgerToken
属性用于回调(当表单发布回Web服务器时)。。这可能是因为你的视图中有一个表单,所以添加了防伪标记。在这种情况下,响应不应兑现,否则反伪造代币不起作用。您应该在
标记上使用`asp antiforgery=“false”`tag helper来按表单禁用它