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

使用ASP.NET Core Identity登录时出现HTTP ERROR 400问题

排查思路
  • 检查防跨站请求伪造(CSRF)令牌:ASP.NET Core默认会验证POST请求的CSRF令牌,你的登录表单中未包含__RequestVerificationToken字段,这是POST请求返回400的最常见原因。添加以下代码到<form>标签内:

    @Html.AntiForgeryToken()
    

    或者修改<form>标签启用自动生成令牌:

    <form id="account" method="post" asp-antiforgery="true">
    
  • 确认.NET Core 2.2 SDK已安装:VS2022默认不包含旧版本SDK,需下载安装.NET Core 2.2 SDK,确保项目运行时环境匹配原版本。

  • 验证项目目标框架未被修改:打开项目文件(.csproj),确认<TargetFramework>节点值为netcoreapp2.2,避免VS2022自动升级框架版本导致兼容性问题。

  • 补全表单缺失字段:InputModel包含RememberMe字段,但视图中无对应输入控件,绑定异常可能触发请求验证失败。添加复选框控件:

    <div class="form-group">
        <input asp-for="Input.RememberMe" />
        <label asp-for="Input.RememberMe">@Html.DisplayNameFor(m => m.Input.RememberMe)</label>
    </div>
    
  • 查看请求详细信息:使用浏览器开发者工具(F12)查看登录POST请求的Network面板:

    • 确认请求URL与Login页面路由一致
    • 检查表单数据是否包含Email、Password字段
    • 查看响应头中的具体错误提示
  • 调试OnPostAsync方法:在OnPostAsync开头添加断点或日志,检查ModelState.IsValid的值。若为false,遍历ModelState.Values查看具体错误项,定位参数绑定或验证失败原因。

  • 确认Startup.cs中间件配置:检查身份验证相关配置是否正确且顺序无误:

    // 配置Identity服务
    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();
    
    // 中间件顺序:UseAuthentication必须在UseMvc之前
    app.UseAuthentication();
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
    
  • 检查launchSettings.json配置:确认环境变量ASPNETCORE_ENVIRONMENT与原项目一致(如Development/Production),避免因环境配置差异导致验证规则变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:15:31