赞
踩
当把.netcore应用程序部署到linux或docker中去的时候,连接sqlserver数据库可能报错如下:
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 35 - An internal exception was caught)
这个报错的原因是因为linux要求使用的TLS版本较高,而SqlServer数据库不支持。
这个问题也被收录在了微软文档里:
https://docs.microsoft.com/zh-cn/sql/connect/ado-net/sqlclient-troubleshooting-guide?view=sql-server-ver15
这里,就按照上面提示最简单的方法:修改linux的TLS最低版本要求。
解决办法:
修改配置文件/etc/ssl/openssl.cnf
(不存在就新建)如下:
[system_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT@SECLEVEL=1
修改后就可以了。
docker部署情况下:
加假如你将.net core应用程序部署在了Linux中的docker中,那么除了修改/etc/ssl/openssl.cnf
文件,你还需要在docker run加入参数:
-v /etc/ssl/openssl.cnf:/etc/ssl/openssl.cnf,示例如下:
docker run -v /etc/ssl/openssl.cnf:/etc/ssl/openssl.cnf -it -p 5000:5000 --name=webdemo2 webdemo2
docker-compose部署情况下:
修改docker-compose.yml文件中对应的配置即可,如:
webdemo:
image: webdemo:1.0
build:
context: . webdemo
dockerfile: Dockerfile- webdemo
container_name: webdemo
ports:
- 19500:19500
environment:
- ASPNETCORE_ENVIRONMENT=Fat
volumes:
- /etc/localtime:/etc/localtime
- /etc/ssl/openssl.cnf:/etc/ssl/openssl.cnf
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。