使用Mono时,Sql连接拒绝连接
本文关键字:连接 拒绝 Sql Mono 使用 | 更新日期: 2023-09-27 18:18:34
我创建了一个简单的程序来说明这个问题。我有一个控制台应用程序,应该连接到外部SQL Server实例。
在本地我可以连接到这个主机很好(是否被设置为IP地址或外部URL,服务器是通过DNS关联)。当我将已编译的应用程序版本复制到安装了Mono的Ubuntu服务器上,并使用mono ConsoleApplication1.exe
运行应用程序时,每次都会出现这个错误:
System.Data.SqlClient。SqlException:服务器不存在拒绝连接。at System.Data.SqlClient.SqlConnection.Open<0x409d4e90 + 0x0053f> in:0 atConsoleApplication1.Program。主要(系统。String[] args) <0x409a7d50 +0x00077> in:0 [ERROR] FATAL UNHANDLED EXCEPTION:System.Data.SqlClient.SqlException: Server不存在拒绝连接。at System.Data.SqlClient.SqlConnection.Open<0x409d4e90 + 0x0053f> in:0 atConsoleApplication1.Program。主要(系统。String[] args) <0x409a7d50 +0x00077> in:0
我已经尝试使用直接IP到SQL Server实例和外部URL(在下面的地方),我知道在本地运行这个应用程序。
用于在应用程序中设置的代码:
App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="Test" connectionString="data source=<Host>'<Instance Name>, 1069;database=<Database Name>;user id=<User>;password=<Password>;multipleactiveresultsets=True;"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
</startup>
</configuration>
c#代码class Program
{
static void Main(string[] args)
{
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Test"].ConnectionString))
{
connection.Open();
Console.WriteLine("Connected");
}
}
}
环境:- SQL Server: Windows 2012 DC with SQL Server 2014 Instance
- Mono环境:Ubuntu 16.04运行最新Mono- complete
- 。NET版本:4.6.2(也尝试过4.5.2)
更新:我可以确认使用FreeTDS我可以从Ubuntu实例连接到SQL Server的实例,因此问题似乎与运行应用程序隔离。
我决定启动另一个Linux实例(这次是Debian),看看它是否可能是环境问题。我安装了最新的单声道,等等。运行相同的应用程序实际上给了我比在Ubuntu实例上运行更多的信息:
Server does not exist or connection refused. ---> System.Net.Sockets.SocketException: Could not resolve host '<Host>'<Instance Name>'
以前我没有得到额外的SocketException
,说明它不能解析主机。我不知道为什么我在Ubuntu实例上没有得到这个信息。
这导致我将Instance Name
从连接字符串中移除。一旦完成这些操作,应用程序就开始按预期工作。