未在IdentityDbContext中创建数据库连接

时间:2018-01-09 04:31:06

标签: authentication asp.net-identity asp.net-core-2.0

我正在尝试使用Asp.Net Identity 2验证Asp.Net Core 2 Web API。这是我的AuthController和databasecontext的代码:

public AuthController(UserManager<ApiUser> userManager, SignInManager<ApiUser> signInManager, RoleManager<ApiRole> roleManager
        , IPasswordHasher<ApiUser> passwordHasher, IConfiguration configurationRoot, ILogger<AuthController> logger)
    {
        _userManager = userManager;
        _signInManager = signInManager;
        _roleManager = roleManager;
        _logger = logger;
        _passwordHasher = passwordHasher;
        _configurationRoot = configurationRoot;
    }

public class SecurityContext : IdentityDbContext<ApiUser, ApiRole, int>
{
    public SecurityContext(DbContextOptions<SecurityContext> options)
        : base(options)
    {
    }
}

在运行时,当我检查SecurityContext中的选项时,我可以看到connectionstring属性设置。但是当我调试_userManager时,没有设置数据库连接。

我也从Startup.cs配置了数据库连接:

        services.AddDbContext<SecurityContext>(options =>
 options.UseSqlServer(Configuration.GetConnectionString("SystemDbContext")));

        services.AddIdentity<ApiUser, ApiRole>()
            .AddEntityFrameworkStores<SecurityContext>()
            .AddDefaultTokenProviders();

数据库连接在appsettings.json中设置:

{
  "ConnectionStrings": {
    "SystemDbContext": "Server=xxx;Database=xxxx;user id=sa;password=xxx;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

我在执行登录端点时遇到的错误是 - “用户登录失败”域用户帐户“,而我已将SQL连接设置为与'sa'连接。似乎它不是属性设置数据上下文的连接字符串。

更新: 在进一步调查中,我看到虽然DbContextOptions的SQLConnectionString正确,但连接为空。

有人能指出这里缺少什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的ConnectionString不对,您需要删除Trusted_Connection=True部分。 将appsettings连接字符串设置为以下内容,它将起作用

{
  "ConnectionStrings": {
    "SystemDbContext": "Server=xxx;Database=xxxx;user id=sa;password=xxx;MultipleActiveResultSets=true"
  }
}