我正在docker容器中使用.NET Core应用程序,它具有与Redis和SQL Server的连接。 Redis运行正常,但是我在使用SQL Server连接时遇到问题。从VS中,当我在IIS上运行我的应用程序时,它可以正确打开连接,但是当我像docker容器一样运行它时,connection.Open()
方法将无限期挂起并且永远不会出现异常。我尝试过更改IP以使连接失败并到达和异常(这使我认为它可以到达服务器但可以连接)。
这是一台远程服务器,因此我尝试通过PC与Management Studio进行连接,并且可以正常工作。我使用OrmLite进行连接,但我也尝试使用SqlConnection
。
目前我的测试代码如下:
// Testing telnet to ensure the container can reach server and port
TcpClient tc = null;
try
{
tc = new TcpClient("X.X.X.X", 1433);
string s = "";
// If we get here, port is open
}
catch (SocketException se)
{
string error = "";
// If we get here, port is not open, or host is not reachable
}
finally
{
if (tc != null)
{
tc.Close();
}
}
try
{
// Build connection string
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "X.X.X.X, 1433";
builder.UserID = "user";
builder.Password = "pass";
builder.InitialCatalog = "db";
// Connect to SQL
using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
{
connection.Open();
connection.Close();
return "ok";
}
}
catch (Exception e)
{
return "error";
}