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

问题描述

我正在将我的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

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

解决方法

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

configuration.GetConnectionString(GetConnectionString())

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...