发布 Entity Framework 连接到错误的数据库

On publish Entity Framework is connecting to the wrong database

我有 Asp.Net Core 5.0 和 Entity Framework 5.0.12。当我更改连接字符串时,我会在 appsettings.json 和 ProgramContext 中更改它。然后我在文件夹中构建和发布或使用 FTP 发布。两次我都确保发布者使用的是正确的连接字符串。

然后我进行部署,我可以看到在部署时发布者正在使用旧的连接字符串。请帮助我新发布的api如何使用新的连接字符串。

对于那些会说在 appsettings.json 中放一些代码作为示例(如此无关紧要)的人,我有

  "ConnectionStrings": {
    "DefaultConnection1": "Data Source=MyDatabaseServer;Initial Catalog=myDatabaseName;MyUser;Password=MyPassword"

 

然后在services.cs我有

services.AddDbContext<MyContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection1")));

在MyContext.cs我有

if (!optionsBuilder.IsConfigured)
 {
      optionsBuilder.UseSqlServer("Data Source=MyDatabaseServer;Initial Catalog=myDatabaseName;MyUser;Password=MyPassword");
 }

当我再次尝试打印 context.Database.GetConnectionString() 时,我得到了

Data Source=MyOldDatabaseServer;Initial Catalog=myOldDatabaseName;MyOldUser;Password=MyPassword

请帮忙

不是读取了错误的连接字符串。它正在阅读它所看到的。发生这种情况有几个原因。首先,它不会用您在本地应用程序设置上所做的新更新覆盖服务器上的应用程序设置。在这种情况下,只需在服务器上手动更新它。其次,您在发布文件夹中同时拥有 appsettings.json 和 appsettings.development.json,项目读取的其中一个可能不是最新的。只需更新它,使两个应用程序设置具有相同的内容。一旦你弄清楚它使用了哪些应用程序设置,你就可以删除未使用的设置。

检查你 appsettings.json 和 appsettings.development.json

然后

  1. 清理解决方案!
  2. 删除发布文件夹(本地)
  3. 删除发布文件夹(服务器)

现在重新发布和上传

找到解决方案

有 2 个文件:appsettings.json 和 appsettings.production.json。 Api 从第二个文件 appsettings.production.json 获取连接字符串,因此需要手动进行更改。