You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 7中app.UseAntiforgery()为何出现编译错误?

ASP.NET Core 7.0中UseAntiforgery方法报错的解决办法

我在使用ASP.NET Core 7.0时,复制了一段代码示例:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAntiforgery();

var app = builder.Build();

app.UseAntiforgery();

// Anti-forgery token validation happens for this endpoint
app.MapPost("/todo", ([FromForm] Todo todo) => Results.Ok(todo));

app.Run();

但编译器提示错误:

CS1061 - “WebApplication”不包含“UseAntiforgery”的定义,也找不到可接受第一个参数为“WebApplication”类型的可访问扩展方法“UseAntiforgery”(是否缺少 using 指令或程序集引用?)

问题原因与解决办法

  • 核心原因:ASP.NET Core 7.0中,UseAntiforgery 扩展方法的使用场景和引入方式有明确要求。默认情况下,当你通过 builder.Services.AddAntiforgery() 注册防伪服务后,框架会自动为使用 [FromForm] 的POST端点启用防伪验证,无需显式调用 app.UseAntiforgery()。

  • 具体解决步骤:

    1. 确认命名空间引用:在代码文件顶部添加命名空间:
      using Microsoft.AspNetCore.Antiforgery;
      
    2. 移除不必要的调用:直接删除 app.UseAntiforgery(); 这一行代码。因为显式调用该方法在7.0的最小API模式下并非必需,框架会自动处理符合条件的端点验证。
    3. 检查框架引用:确保项目的 .csproj 文件中已包含 Microsoft.AspNetCore.App 框架引用(Web项目默认已添加):
      <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
      </ItemGroup>
      

调整后的代码如下:

using Microsoft.AspNetCore.Antiforgery;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAntiforgery();

var app = builder.Build();

// Anti-forgery token validation happens automatically for this endpoint
app.MapPost("/todo", ([FromForm] Todo todo) => Results.Ok(todo));

app.Run();

内容的提问来源于stack exchange,提问作者bdcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:12:41