无法登录-用户“用户名”登录失败

时间:2020-08-11 12:57:39

标签: entity-framework-core asp.net-core-mvc

我正在将我的ASP.NET Framework应用程序迁移到ASP.NET Core

我在连接到生产数据库时遇到问题。

我的本​​地SQLite数据库工作正常。

当我尝试连接到远程SQLExpress数据库时出现问题。

错误消息是

用户“用户名”的登录失败

最明显的第一件事是用户名或密码错误,但是我正在从web.config文件中复制连接字符串并将其粘贴到appsettings.json文件中!

当我尝试使用.NET Framework版本连接到数据库时,它连接正常。

如果我通过SSMS连接并使用SQL Server Auth,则可以使用相同的复制和粘贴凭据登录。

我相信代码的相关部分是

public void Configure(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseLazyLoadingProxies();
    var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json", true, true).Build();
    var connectionString = configuration.GetConnectionString(GetConnectionString());

    if (IsTestDatabase())
    {                
        optionsBuilder.UseSqlite(connectionString);
    }
    else
    {  
        optionsBuilder.UseSqlServer(connectionString); //I ASSUME THIS WORKS WITH SQL EXPRESS
    }
}

和我的appsettings.json文件的相关部分是

"ConnectionStrings": {
    "TestingDatabase": "Data Source=c:\\MyWebsite\\datastorage.db;",
    "LiveDatabase": "Data Source=111.111.111.111\\sqlexpress;initial catalog=DatabaseName;persist security info=True;user id=username;password=password;multipleactiveresultsets=True;"
},

我能够创建数据库上下文的实例,但不能查询任何数据。

var dc = new DalCf.Entities();
var account = dc.Accounts.AsNoTracking().Single(); //this is the line that throws an exception

我分享的内容看起来像是做错了什么吗?

1 个答案:

答案 0 :(得分:1)

由于您可以在SSMS中成功连接并且连接字符串有效,所以用于获取连接字符串的机制有问题:

configuration.GetConnectionString(GetConnectionString())

您在上一行使用的GetConnectionString()方法似乎未返回正确的连接字符串。

查看GetConnectionString()返回的内容(某些字符可能有问题,例如您的密码是否使用非字母数字字符)