使用dockerized的postgresql映像进行Entity Framework Core迁移。没有已知的此类主机例外

在我的aspnet.core项目中,我想使用dockerized的postgresql映像。
容器运行正常。 (我正在使用Windows,但服务器在ubuntu18.04服务器上运行)

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    a01980eb90bc        postgres:11.4       "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes       0.0.0.0:5432->5432/tcp   pg

appsettings.json文件看起来像

    "ConnectionStrings": {
        "LibvirtConnection": "User ID =postgres;Password=*****;Server=185.22.98.7:5432;Port=5432;Database=libvirt;Integrated Security=true;Pooling=true;"
      },

启动类看起来像

   public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
                services.AddEntityFrameworkNpgsql().AddDbContext<AppDbContext>(opt =>
                    opt.UseNpgsql(Configuration.getconnectionString("LibvirtConnection")));
            }

尝试运行dotnet ef数据库更新时出现异常

    dotnet ef database update
    info: microsoft.EntityFrameworkCore.Infrastructure[10403]
          Entity Framework Core 2.2.6-servicing-10079 initialized 'AppDbContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: None
    System.Net.Sockets.SocketException (11001): No such host is known
       at System.Net.Dns.InternalGetHostByName(String hostName)
       at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
       at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 663
       at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout,Boolean async,CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 555
       at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout,CancellationToken cancellationToken) in C:\projects\npgsql\src\Npgsql\NpgsqlConnector.cs:line 414
       at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext() in C:\projects\npgsql\src\Npgsql\NpgsqlConnection.cs:line 273
    --- End of stack trace from previous location where exception was thrown ---
       at Npgsql.NpgsqlConnection.Open() in C:\projects\npgsql\src\Npgsql\NpgsqlConnection.cs:line 153
       at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() in C:\projects\npgsql-entityframeworkcore-postgresql\src\EFCore.PG\S   at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists() in C:\projects\npgsql-entityframeworkcore-postgresql\src\EFCore.PG\Storage\Internal\NpgsqlDatabaseCreator.cs:line 190
       at microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
       at microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
       at microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration,String contextType)
       at microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
       at microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(action action)
    No such host is known
j445566321 回答:使用dockerized的postgresql映像进行Entity Framework Core迁移。没有已知的此类主机例外

原因是我将服务器和端口组合在一起

之前: Server=185.22.98.7:5432;Port=5432

之后: Server=185.22.98.7;Port=5432

本文链接:https://www.f2er.com/3118502.html

大家都在问