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()。具体解决步骤:
- 确认命名空间引用:在代码文件顶部添加命名空间:
using Microsoft.AspNetCore.Antiforgery; - 移除不必要的调用:直接删除
app.UseAntiforgery();这一行代码。因为显式调用该方法在7.0的最小API模式下并非必需,框架会自动处理符合条件的端点验证。 - 检查框架引用:确保项目的
.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
相关产品推荐
相关产品推荐

