我正在将我的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
我分享的内容看起来像是做错了什么吗?
答案 0 :(得分:1)
由于您可以在SSMS中成功连接并且连接字符串有效,所以用于获取连接字符串的机制有问题:
configuration.GetConnectionString(GetConnectionString())
您在上一行使用的GetConnectionString()
方法似乎未返回正确的连接字符串。
查看GetConnectionString()
返回的内容(某些字符可能有问题,例如您的密码是否使用非字母数字字符)