.net - .Net Web 应用程序 SQL Server 连接字符串 Linux 问题
问题描述
我遇到了与部署在 Linux 环境中的 .net 核心应用程序使用的 SQL Server 连接字符串有关的问题。.net 核心应用程序需要访问不同服务器上的 sql 服务器。
我正在使用的连接字符串如下
"ConnectionStrings" : {
SQLDbContext": "Server=serverabc\\dev_xys;Database=mynewDatabase;Integrated Security = True"
}
当我在我的 Windows 电脑上本地运行时它工作正常
但是当它部署到 Linux 机器上时,我收到以下错误
ExtendedSocketException:名称或服务未知
Dns.cs 中的 System.Net.Dns.GetHostEntryOrAddressesCore(string hostName, bool justAddresses),第 323 行
例外:无法连接到 SQL Server Browser。确保 SQL Server Browser 已启动
我已经检查了运行 .Net Service Deployed 的服务帐户可以访问数据库。
连接字符串是否需要更改?
解决方案
这只有在
- SQL Server 启用了 TCP/IP,并且浏览器服务正在运行
- Windows 防火墙允许在 SQL Server 实例侦听的任何端口上使用 UDP 端口 1434 和 TCP。
- 客户端可以解析主机名
或者,您可以使用 SQL Server 配置管理器将 SQL Server 实例设置为侦听固定端口(默认为 1433),并在连接字符串中指定该端口而不是实例名称。