【问题标题】:.NET Core API not connecting to SQL Server running on Docker.NET Core API 未连接到在 Docker 上运行的 SQL Server
【发布时间】:2021-03-27 16:27:28
【问题描述】:

尝试对在 Docker 上运行的 Rest API 执行请求时出现此错误:

Microsoft.Data.SqlClient.SqlException (0x80131904):网络相关 或在建立连接时发生特定于实例的错误 SQL 服务器。服务器未找到或无法访问。核实 实例名称正确且 SQL Server 配置为 允许远程连接。 (提供者:TCP 提供者,错误:35 - An 内部异常被捕获)---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (00000005, 0xFFFDFFFF): 名称或服务未知

这是我的连接字符串:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "server=sqlserver,1433;Database=Test;Trusted_Connection=False;ConnectRetryCount=0;User Id=sa;Password=Password3784"
  }
}

这是我的 docker-compose.yml:

version: '3.4'

services:
  test:
    image: ${DOCKER_REGISTRY-}test
    build:
      context: .
      dockerfile: Test/Dockerfile

  sqlserverService:  
    image: microsoft/mssql-server-linux:2017-latest  
    hostname: 'sqlserver'  
    environment:  
      ACCEPT_EULA: Y  
      SA_PASSWORD: "Password3784"  
    volumes:  
      - ./data/mssql:/var/opt/mssql3  
    ports:  
      - '1433:1433'  
    expose:  
      - 1433  

在我的计算机上使用 SQL Server Management Studio 登录并使用此凭据可以正常工作。 本地主机,1433 萨 密码3784

【问题讨论】:

  • ports 已经将端口暴露给 swarm 中的容器,所以 expose 似乎是多余的。如果只使用端口 1433:1433 会改善吗?
  • 它可以通过 IP 工作吗?
  • 我已经删除了端口 1433:1433 但没有任何变化。 @AlwaysLearning
  • 如何知道Docker建立的IP?这是我第一次使用它。 @RandyinMarin

标签: sql-server docker .net-core


【解决方案1】:

Weel,我找到了解决方案。

我正在使用与我的 API 分开的 SQL Server 创建一个新图像。

我应该做的是在同一个 docker-compose 上创建 SQL Server。

为此,我已经阅读了这篇文章(它是西班牙语): https://dev.to/ebarrioscode/que-demonios-es-docker-docker-compose-y-como-dockerizar-dotnet-core-webapi-y-sql-server-en-un-ambiente-de-desarrollo-ideal-95a

【讨论】:

    【解决方案2】:

    最好的解决方案是添加您的本地主机 IP 地址或服务器 IP,例如:

    Server=192.168.0.12\\MSSQLSERVER,1433;Database=x;Trusted_Connection=False; User Id=x;Password=x;MultipleActiveResultSets=true
    

    像这样在 appsettings.json 中使用连接字符串应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 2020-01-11
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2022-01-20
      • 2020-07-07
      • 2018-07-03
      相关资源
      最近更新 更多