Не удается подключиться к серверу SQL из контейнера Docker do tnet - PullRequest
0 голосов
/ 18 февраля 2020

Я работаю над основным приложением. NET внутри контейнера docker, оно имеет соединения с Redis и SQL Сервером. Redis работает отлично, но у меня проблемы с подключением к серверу SQL. Из VS, когда я запускаю свое приложение на IIS, оно может правильно открыть соединение, но когда я запускаю его как контейнер docker, метод connection.Open() зависает бесконечно и никогда не достигает исключения. Я попытался изменить IP-адрес, чтобы соединение не установилось, и оно достигает и исключение (что заставляет меня думать, что оно может достичь сервера, но может подключиться).

Это удаленный сервер, поэтому я попытался подключиться с моего P C к 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";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...