无法从Docker dotnet容器连接到SQL Server

时间:2020-02-18 14:51:12

标签: c# .net sql-server docker .net-core

我正在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";
}

0 个答案:

没有答案