.netcore连接sqlserver报错:A connection was successfully established with the server, but

79 篇文章 10 订阅

当把.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
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackletter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值