Odbc тайм-аут открытого соединения - PullRequest
2 голосов
/ 05 декабря 2011

У меня проблема с подключением Odbc. В Open () все работало нормально с кодом ниже, пока он не начал зависать с высокой задержкой - плохие соединения.

Я использую TMnetsim в качестве инструмента для имитации плохого сетевого соединения.Код прекрасно работает в ситуациях с высокой задержкой, но он просто зависает при потере пакетов.Даже одного пакета достаточно, чтобы сломать программу.(Потеря пакетов начинается после% 3 Loss rate)

Мой вопрос: почему не выполняется connection.Open (), а время ожидания не завершается?Если я явно установлю ConnectionTimeout на 5, он никогда не истекает и остается там навсегда.

//connectionString: "DRIVER={PostgreSQL Unicode};SERVER=127.0.0.1;UID=master;PWD=pass;DATABASE=global;PORT=5432;"

using (OdbcConnection connection = new OdbcConnection(connectionString))
{
    try
    {
        connection.ConnectionTimeout = 5;
        connection.Open(); // It hangs here forever... ? why?
     }
     catch (Exception ex)
     {
         MessageBox.Show("...");
     }

     // code continues...
}

Что ж, я довольно новичок в программировании БД, ваши ответы или предложения действительно очень важны для меня, спасибо.

Редактировать: connectionString: "DRIVER = {PostgreSQL Unicode}; SERVER = 127.0.0.1; UID = master; PWD = pass; DATABASE = global; PORT = 5432;"База данных Postgresql 8.x

...