目标:部署在Ubuntu 21.10上的Asp.net Core 6.0能连接Windows上的Sqlserver.
上一篇已经可以在Ubuntu上打开Asp.net 的站点了,现在就解决数据库连接的问题。
1.首先先不管程序能否连的上,先要试下在命令行下能否连接SQL。这也是为了测试能否物理上连接是否有问题。
a)ubuntu中连接mssql数据库_瞧字不识-优快云博客_ubuntu 连接mssql,参照此文,连接成功:
sudo apt-get install tdsodbc sudo apt-get install sqsh sqsh -U 用户名 -P 密码 -S 服务器地址
这个用的是tdsodbc
b)另外还有用unixodbc的,安装时总出错,意思是依赖的不是stable,安装不成功
直接采用a)方法即可,在命令行上可以查询出数据库内容,连接测试完成
2.接下来打开有数据访问的页面,意料之中的出现错误:
a)在命令行窗口看出错提示,是log4net记日志的一行代码,先禁用这句
b)再编译,还是有错,这次的提示是:
A connection was successfully established with the server,but then an error occurred during the pre-login handshake.(provider:SSL provider,error:31.....
参照这篇文章
.Net Core部署Linux的坑 - 山治先生 - 博客园
是TLS 不兼容的原因,要修改
1. sudo vim /etc/ssl/openssl.cnf
2. 在 oid_section = new_oids 下增加:
openssl_conf = default_conf
3.文件末尾追加:
[default_conf] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] MinProtocol = TLSv1 CipherString = DEFAULT@SECLEVEL=1
修改后要重启才能生效,至此访问数据的页面可以正常打开