无法使用 Web API 标识登录



我试图在本地项目中实现web api的身份验证,并学习这个过程,我使用asp.net的教程在这里我用这个镜子得到的错误是我自己遇到的问题,所以感觉这是一个很好的解决问题的起点。我所做的唯一更改是将其指向我的本地SQL数据库。

我不喜欢它创建的表的命名约定,所以我添加了一个覆盖来指定从在线资源获得的表名。当我添加这个覆盖时,它抛出一个状态码500内部服务器错误:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }
    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<IdentityUser>().ToTable("User").Property(p => p.Id).HasColumnName("UserID");
        modelBuilder.Entity<IdentityRole>().ToTable("Roles").Property(p => p.Id).HasColumnName("RoleID");
        modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim").Property(p => p.Id).HasColumnName("UserClaimID");
    }
}

如何在保留功能的同时更改表名?

代码看起来很好,一个500的错误是不够的信息,你或我们继续。在Web API中,几乎任何异常都会返回500。

遵循以下指南是值得的:https://www.asp.net/web-api/overview/error-handling/exception-handling以帮助确定此问题的根本原因以及您的Web API中的未来问题。

所以问题是我运行了一次,它创建了默认的表模式,然后我再次运行它,它期待代码迁移来更新表。我希望它生成新的表,所以这就是困惑所在。我删除了整个数据库,并保留了相同的覆盖方法,它工作了。

相关内容

  • 没有找到相关文章

最新更新