System.InvalidOperationException: Invalid attempt to call Read when reader is closed.

Иногда в одном бизнес процессе в базовых элементах "Читать данные" или "Изменить данные" возникает ошибка:
System.InvalidOperationException: Invalid attempt to call Read when reader is closed.
at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
at System.Data.SqlClient.SqlDataReader.Read()
at Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)
at Terrasoft.Core.Entities.EntityCollection.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)
at Terrasoft.Core.Entities.EntityCollection.GetEntityCollection(UserConnection userConnection)
at Terrasoft.Core.Process.Configuration.ReadDataUserTask.InternalExecute(ProcessExecutingContext context)
at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)
at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)

При нажатие Выполнить элемент процесс нормально идет дальше. Происходит ошибка не всегда, иногда весь процесс нормально идет.

Нравится

3 комментария

Странно. Выглядит как исключение в стандартном элементе чтения данных. Воспроизводится всегда при чтении или изменении на одном и том же объекте?

Может, в структуре Вашего БП дело? Если сделать тестовый БП, который состоит только из такого же чтения и запускать его, тоже воспроизводится?

В том объекте нет никаких самодельных встроенных БП?

 

В одном и том же БП на разных объектах (заявка и договор). Воспроизводиться только на среде клиента и только в одном БП.

Возможно, дело в конкретной структуре построенного Вами процесса. Например, если одна ветвь приводит к завершению процесса, а в другой в это время как раз выполнялся этот элемент работы с данными. И в обоих ветвях использовался один Reader, через который идёт работа с базой, в той ветви, которая завершилась раньше, его закрыли. Скорее всего, в скрипте.

Несколько раз такое наблюдалось, но не было порядка воспроизведения на стандартных объектах. Если есть возможность построить такой процесс, покажите или вышлите его схему и текст элементов-скриптов. Или обратитесь в поддержку, предоставив доступ к системе.

Показать все комментарии