Почему я получаю сообщение «Произошла ошибка связи» с сервером as / 400? - PullRequest
2 голосов
/ 01 ноября 2010

У меня есть сайт, который запрашивает базу данных as / 400 для получения определенных фрагментов информации, включая один небольшой фрагмент информации о зарегистрированном пользователе.

Из-за этого as / 400 запрашивается всякий раз, когда пользователь регистрируется в новом сеансе.

Я получаю отдельные сообщения об ошибке сервера A communication error occurred, особенно когда люди выходят в систему по выходным.

Если вы нажмете клавишу f5 и обновите страницу, ошибка исчезнет, ​​и все будет отлично.

Кто-нибудь знает, почему я получаю эту ошибку?

Я думал, что поскольку f5 устраняет ошибку, я могу просто повторить любой запрос, который по этой причине не удался, но я не хочу начинать без более глубокого понимания ситуации.

Я просмотрел пользовательские документы IBM и довольно много поискал в Google и ничего не нашел.

редактировать

Соединение устанавливается с помощью IBM.Data.DB2.iSeries драйверов для Windows версии 12.

Код подключения выглядит примерно так:

public DataSet RetrieveDataSet(string sql)
 {
    DataSet ds = new DataSet();
    iDB2Connection con = new iDB2Connection();

    iDB2DataAdapter da = null;
    try
    {
        con.ConnectionString = ConnectionString;

        con.Open();

        da = new iDB2DataAdapter(sql, con);

        da.Fill(ds);

    }
    catch (Exception ex)//yes i am aware this should not be catching the base exception
    {
        LogError("AS400Connection", "RetrieveAll", ex.Message, sql, ex.StackTrace, con.JobName.Trim());
        throw;
    }
    finally
    {
        if (con.State == ConnectionState.Open)
            con.Close();
        if(da!=null)
            da.Dispose();
        con.Dispose();
        ds.Dispose();
    }

    return ds;
}

Строка da.Fill(...) вызывает исключение Ошибка связи.

Ответы [ 4 ]

3 голосов
/ 02 ноября 2010

В итоге я написал небольшой кусочек кода, который пытался выполнить небольшой запрос непосредственно перед каждым критическим разделом, поэтому, если задание было завершено, он убивает только этот запрос вместо всего приложения.

Редактировать -

Параметр строки подключения "CheckConnectionOnOpen" делает то же самое, но как часть драйвера.

1 голос
/ 05 ноября 2010

Очень распространенный сценарий - соединения TCP / IP автоматически отключаются сетевыми маршрутизаторами и брандмауэрами при длительном бездействии.

Я бы предположил, что это именно то, что происходит здесь.

0 голосов
/ 21 августа 2015

В моем случае я получал эту ошибку, потому что мой пароль истек, и я изменил его, но я забыл обновить строки подключения в моих файлах .config.Поэтому мой пользователь был отключен после трех (программных) попыток входа со старым паролем.

Я понял это, когда попытался получить доступ к серверу с помощью Query Tool, и он сказал мне, что мой пользователь был отключен, хотя я и вошелновый пароль.Это было плохо, но сообщение об ошибке не было действительно информативным ...

0 голосов
/ 01 ноября 2010

Хммм ... это странно. Вы смогли продублировать ошибку? Если у вас нет других предложений, попробуйте добавить это в один из списков midrange.com . Я бы попробовал MIDRANGE-L или System i dotNet .

...