Как может Ora-24309 произойти, когда состояние соединения закрыто? - PullRequest
0 голосов
/ 27 ноября 2018
//I got a Connection which is kept alive..
IDbConnection con = CreatyMyOracleConnection();

//Later, if I want to use the connection i check if it's closed to (re-)open it.'
if (con.State == ConnectionState.Closed)
    con.Open() // Here OracleException 24309 is thrown

Иногда я получаю:

ORA-24309 "уже подключен к серверу".

Как это может быть, если проверить состояниеперед открытием?

Try / catch кажется уродливым решением.Я думаю, должен быть способ узнать, что делать со связью.Как я должен проверить соединение перед (повторным) его открытием?

В настоящее время я использую неуправляемый ODP.Net 11.2.

1 Ответ

0 голосов
/ 27 ноября 2018

ConnectionState может быть

  • Сломан
  • Закрыт
  • Подключен
  • Выполнен
  • Извлечен
  • Открыть

см. ConnectionState Enum

Итак, вам лучше использовать

if (con.State != ConnectionState.Open)
    con.Open();
...