当前位置:   article > 正文

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

a connection was successfully established with the server, but then an error

当把.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
  • 1
  • 2
  • 3

修改后就可以了。

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
  • 1

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/601819
推荐阅读
相关标签
  

闽ICP备14008679号