我们的项目基于 .NET 8 构建,在尝试连接到 SQL 服务器(版本 11.0.5058)时遇到问题。我们项目的 Docker 文件如下:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
EXPOSE 80
ENV ASPNETCORE_URLS=http://+:80
Copy . .
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /usr/lib/ssl/openssl.cnf
RUN cat /etc/ssl/openssl.cnf
ENTRYPOINT ["dotnet", "Api.dll"]
当我想打开 SQL 连接时,出现此错误:
System.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed)
我们已经尝试了这个 GitHub 问题中提到的所有解决方案,但不幸的是,它们都没有解决我们的问题。
我们希望您能够帮助我们解决此问题。预先感谢您的帮助!
尝试在连接字符串中使用
TrustServerCertificate=true
。您还可以参考此 - CRUD Operations in ASP.NET Core and SQL Server with Docker,它执行相同的操作。