具有 EF 核心的 Dotnet 核心 Web API 无法连接到 PostgreSQL
Dotnet core Web API with EF core doesn't connect to PostgreSQL
我有一个使用 dotnet core 3.1 和 EF core 3.1 开发的 Web API。我在 IBM 云中创建了一个 postgreSQL Db,并且可以使用 PgAdmin 访问它。但是,当我尝试通过代码连接到数据库时,出现以下错误。
System.Net.Sockets.SocketException: Can't assign requested address
at at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
at at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
at at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0``1.<<StartAsync>g__OnBind|0>d.MoveNext()
at at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
at at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context)
at at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.BindAsync(AddressBindContext context)
at at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(IServerAddressesFeature addresses, KestrelServerOptions serverOptions, ILogger logger, Func
2 创建绑定)
在 Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication1 application, CancellationToken cancellationToken)
at at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at Marketplace.Api.Program.Main(String[] args) in /Users/jayasuryajeyakodi/my/startup/Marketplace/Marketplace.BackEnd/Marketplace.Api/Program.cs:16
这是我在 startup.cs
中的编码方式
connectionString = "Server=*.databases.appdomain.cloud;Database=*;Port=30331;User Id=ibm_cloud_*;Password=*;
您的错误似乎与 Npgsql 或数据库连接无关。如果您检查堆栈跟踪,您可以看到 Npgsql 不在那里,并且当 Kestrel 试图设置您的套接字传输时从 Socket.Bind 抛出异常。可能存在网络配置问题,您为 bind/listen 指定了地址,但该地址无效。
我有一个使用 dotnet core 3.1 和 EF core 3.1 开发的 Web API。我在 IBM 云中创建了一个 postgreSQL Db,并且可以使用 PgAdmin 访问它。但是,当我尝试通过代码连接到数据库时,出现以下错误。
System.Net.Sockets.SocketException: Can't assign requested address
at at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName)
at at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
at at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<>c__DisplayClass21_0``1.<<StartAsync>g__OnBind|0>d.MoveNext()
at at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context)
at at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context)
at at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.BindAsync(AddressBindContext context)
at at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(IServerAddressesFeature addresses, KestrelServerOptions serverOptions, ILogger logger, Func
2 创建绑定)
在 Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.StartAsync[TContext](IHttpApplication1 application, CancellationToken cancellationToken)
at at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at Marketplace.Api.Program.Main(String[] args) in /Users/jayasuryajeyakodi/my/startup/Marketplace/Marketplace.BackEnd/Marketplace.Api/Program.cs:16
这是我在 startup.cs
中的编码方式connectionString = "Server=*.databases.appdomain.cloud;Database=*;Port=30331;User Id=ibm_cloud_*;Password=*;
您的错误似乎与 Npgsql 或数据库连接无关。如果您检查堆栈跟踪,您可以看到 Npgsql 不在那里,并且当 Kestrel 试图设置您的套接字传输时从 Socket.Bind 抛出异常。可能存在网络配置问题,您为 bind/listen 指定了地址,但该地址无效。