sql-server - docker 中的 Asp.net core 未处理的异常。 SqlException (0x80131904) : . .,但是随后在登录前握手期间发生错误

标签 sql-server asp.net-core docker-compose entity-framework-core gitlab-ci

我收到错误

“未处理的异常。Microsoft.Data.SqlClient.SqlException (0x80131904):已成功与服务器建立连接,但在登录前握手期间发生错误。(提供程序:TCP 提供程序,错误:0 - 未知错误 203)"

当我在 ubuntu 19.10 上的 gitlab(自托管)运行程序中使用 docker-compose 在 CI/CD 流中启动 asp.net core 应用程序容器时,所有 docker 镜像 - 最新。

MSSQL 启动后,我可以正常使用 SSMS 连接到它,但应用程序失败并出现异常。

目标框架:netcoreapp3.1 ORM:EntityFrameworkCore 3.1.4

docker-compose.yml

version: '3.4'

services:
  websiteanalyzer:
    container_name: project-aspnet-core
    image: registry.gitlab.example.com/user/project/imagename:develop
    ports:
      - "34080:34080"
    volumes:
      - /data/project/app/conf/appsettings.json:/app/appsettings.json
    depends_on:
      - db
  db:
    container_name: project-db
    image: "mcr.microsoft.com/mssql/server"
    environment:
        SA_PASSWORD: "password"
        ACCEPT_EULA: "Y"
    ports:
      - "34433:1433"
    volumes:
      - /data/project/mssql/data:/var/opt/mssql/data
      - /data/project/mssql/log:/var/opt/mssql/log
      - /data/project/mssql/secrets:/var/opt/mssql/secrets

Dockerfile

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
#EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
#WORKDIR /src
#COPY ["src/Project/Project.csproj", "Project/"]
#RUN dotnet restore "Project/Project.csproj"
COPY . .
RUN dotnet restore "src/Project/Project.csproj"
#WORKDIR "/src/Project"
RUN dotnet build "src/Project/Project.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "src/Project/Project.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Project.dll"]

appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=db,34433;Database=master;User Id=sa;Password=password;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

知道这里可能出了什么问题吗?

最佳答案

尝试将其附加到 appsettings.json 中的连接字符串:

Integrated Security=false;TrustServerCertificate=true

这样你的配置是:

    "DefaultConnection": "Server=db,34433;Database=master;User Id=sa;Password=password;MultipleActiveResultSets=true;Integrated Security=false;TrustServerCertificate=true"

并在 Dockerfile 中使用 aspnet:3.1-bionic

FROM mcr.microsoft.com/dotnet/aspnet:3.1-bionic

关于sql-server - docker 中的 Asp.net core 未处理的异常。 SqlException (0x80131904) : . .,但是随后在登录前握手期间发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62893160/

相关文章:

sql-server - SQL Server 2012 地理空间查询

mysql - 管理内部的大量数据和图像

c# - 在 DotNet Core 2.2 Web API C# 中创建 3 层架构

mysql - Docker Compose - 如何在一个 mysql 容器中引用多个模式

nginx - docker容器IP在重启时会改变吗?

mysql - 无需 docker-compose 即可访问 Docker (MySQL) 容器?

sql - 在此 SQL 查询中使用 'Not In' 有什么问题?

sql-server - GETDATE 和 SYSDATETIME 的区别

c# - 升级到 ASP.NET MVC6 beta 7 后打开现有项目时出现异常

asp.net-core - 将 POST 请求从 asp.net 核心 Controller 转发到不同的 URL