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

.NET Core MVC部署IIS后AspNetUser对象名无效问题求助

.NET Core MVC部署IIS后登录报错:AspNetUser无效对象名

我们基于.NET Core MVC开发的应用,使用Microsoft.AspNetCore.Identity.EntityFramework包管理身份角色,部署到IIS服务器后出现托管问题:调用signInManager.PasswordSignInAsync方法时触发「AspNetUser无效对象名」错误,但数据库及对应表实际存在。

相关代码如下:

try
{
    var signInResult = await signInManager.PasswordSignInAsync(loginRequest.Username, loginRequest.Password, false, false);

    if (signInResult != null && signInResult.Succeeded)
    {
        if (!string.IsNullOrWhiteSpace(loginRequest.ReturnUrl))
        {
            return Redirect(loginRequest.ReturnUrl);
        }
        return RedirectToAction("Index", "Home");
    }
}
catch (Exception ex)
{
    System.Diagnostics.Debug.Write(ex.ToString());
}

错误触发在try块第一行,相关截图:

错误截图
数据库表
连接字符串

排查解决方案

  • 核对连接字符串指向:确认IIS部署环境的appsettings.json或环境变量中的连接字符串,是否指向存在AspNetUsers表的数据库(注意错误提示表名是AspNetUser少了s,大概率是代码配置与实际表名不匹配)。
  • 检查Identity实体映射:如果自定义了User实体,需确认DbContext的OnModelCreating方法中是否正确配置表名,避免拼写错误:
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        // 确保表名与数据库一致
        modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers");
    }
    
  • 验证数据库架构:确认AspNetUsers表所在的数据库架构(如dbo),是否与DbContext配置的架构一致,架构不匹配也会导致找不到表。
  • 检查应用池权限:确保IIS应用池的运行身份具备访问目标数据库的权限,权限不足会导致无法读取表结构。
  • 确认迁移执行状态:检查部署时是否已完成数据库迁移,保证生产环境数据库表结构与开发环境一致,没有遗漏AspNetUsers表的创建或重命名操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:26:04