微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将postgres docker实例连接到dotnet core 3.1会给出“提供的节点名或服务名,或未知错误” 其他信息

如何解决将postgres docker实例连接到dotnet core 3.1会给出“提供的节点名或服务名,或未知错误” 其他信息

我使用docker与以下docker-compose文件启动了postgres sql

version: '3.8'
  services:
    db:
      image: postgres:latest
      container_name: quoters
      ports:
        - 5432:5432
      environment:
        POSTGRES_USER: ${POSTGRES_USER:-postgres}
        POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password}
        POSTGRES_DB: quoters
      networks:
        - quoters
      volumes:
        - quoters:/data/db/quoters
        - ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
      restart: always
  networks:
    quoters:
      driver: bridge

  volumes:
    quoters:

我正在尝试从我的dotnet核心webapi应用程序本地连接到此postgres sql实例。以下是我的appsettings.json

{
  "ConnectionStrings": {
  "DefaultConnection": 
     "host=db;port=5432;database=quoters;username=postgres;password=password"
  },"Logging": {
    "LogLevel": {
    "Default": "information","Microsoft": "Warning","Microsoft.Hosting.Lifetime": "information"
    }
  },"AllowedHosts": "*"
}

我获得connectionString,并在Startup.cs文件的以下行中使用

var connectionString = Configuration.GetConnectionString("DefaultConnection");
services.AddRepository(connectionString);

services.AddRepository(string)是我创建的扩展方法。然后,我在IsqlConnectionFactory实现中使用此connectionString。

当我尝试在API上测试Swagger时,出现以下错误

System.Net.Internals.socketExceptionFactory+ExtendedSocketException (00000005,0xFFFDFFFF): nodename nor servname provided,or not kNown
   at System.Net.Dns.InternalGetHostByName(String hostName)
   at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
   at Npgsql.NpgsqlConnector.Connect(NpgsqlTimeout timeout)
   at Npgsql.NpgsqlConnector.RawOpen(NpgsqlTimeout timeout,Boolean async,CancellationToken cancellationToken)
   at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout,CancellationToken cancellationToken)
   at Npgsql.ConnectorPool.AllocateLong(NpgsqlConnection conn,NpgsqlTimeout timeout,CancellationToken cancellationToken)
   at Npgsql.NpgsqlConnection.<>c__displayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()

我似乎无法找出问题所在。 (我感觉我的connectionString有点问题了)。 请提供任何解决此问题的帮助

其他信息

  • 我正在使用macOS Catalina10.15.7

解决方法

将连接字符串更改为

"User ID=postgres;Password=changeme;Server=localhost;Port=5432;Database= quoters;Integrated Security=true;Pooling=true;"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。