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

ASP.NET Core2.0迁3.1时ConfigureServices报无法加载AutoValidateAntiforgery相关类错误

问题原因
  • 代码结构错误:你当前的代码将IdentityRegistrar.Register、services.AddSignalR、services.AddAbp等全局服务注册逻辑,错误写到了AddMvc的选项配置委托内部,执行逻辑顺序错误导致服务注册冲突。
  • 框架API变更:ASP.NET Core 3.0+版本重构了防伪验证相关的内部API,原Microsoft.AspNetCore.Mvc.ViewFeatures.Internal命名空间下的AutoValidateAntiforgeryTokenAuthorizationFilter已被移除或调整了访问级别,旧版本ABP框架对该内部API的依赖会触发加载失败。
  • 依赖版本不兼容:你当前使用的ABP框架版本是适配ASP.NET Core 2.0的,不兼容3.1版本的ASP.NET Core运行时。
修复步骤
  • 调整ConfigureServices方法的代码结构,将不属于Mvc选项配置的服务注册逻辑移到AddMvc外部
  • 升级所有ABP相关NuGet包到支持ASP.NET Core 3.1的版本,推荐使用ABP 4.4 LTS版本,该版本原生适配.NET Core 3.1运行时,修复了对内部MVC API的依赖问题
  • 替换防伪验证过滤器的注册方式:ASP.NET Core 3.1提供了原生的AddAutoValidateAntiforgeryToken扩展方法,不需要手动向Mvc过滤器中添加AutoValidateAntiforgeryTokenAttribute
  • 移除项目中零散的Microsoft.AspNetCore.* NuGet包引用,替换为框架引用:在项目的.csproj文件中添加<FrameworkReference Include="Microsoft.AspNetCore.App" />,避免包版本不一致导致的加载冲突
修正后的代码示例
public IServiceProvider ConfigureServices(IServiceCollection services)
{
    // 注册身份验证服务
    IdentityRegistrar.Register(services);
    // 注册SignalR服务
    services.AddSignalR();
    // 注册Mvc服务并配置自动防伪验证
    services.AddControllersWithViews()
        .AddAutoValidateAntiforgeryToken();
    
    // 配置ABP和依赖注入
    return services.AddAbp<AppLibraryBuilderWebFrontEndModule>(options =>
    {
        // 配置Log4Net日志
        options.IocManager.IocContainer.AddFacility<LoggingFacility>(
            f => f.UseAbpLog4Net().WithConfig("log4net.config")
        );
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:36:04