У меня есть приложение ASP.NET, которому необходимо загрузить данные из файла excel. Файл содержит около 20 тыс. Записей. Приложение считывает данные из файла и обрабатывает каждую запись, выполняет вычисления и проверки, а затем вставляет каждую запись в БД. Все работает так, как ожидалось, до тех пор, пока метод Insert не исключит. Ошибка вызывается после 10-11 минут работы. Примечание: Весь процесс загрузки выполняется в рамках транзакции, которая определяется следующим образом: открытНеверная попытка вызова Чтение, когда считыватель закрыт при вызове метода ExecuteScalar
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.MaxValue))
Все время SQLConnection - У меня есть обеспечить это с помощью SQL Profiler. Для работы с БД мы используем объект Microsoft.Practices.EnterpriseLibrary.Data.Database. Это метод вставки:
public bool InsertInspectionRide(InspectionRideBE be)
{
bool result = false;
try
{
using (System.Data.Common.DbCommand cmd = db.GetStoredProcCommand("InsertInspectionRide",
be.param1, be.param2))
{
cmd.CommandTimeout = 60000000;
be.IdRide = Convert.ToInt32(db.ExecuteScalar(cmd));
result = be.IdRide > 0;
}
}
catch (Exception ex)
{
if (ExceptionPolicy.HandleException(ex, "DAL"))
{
throw;
}
}
return result;
}
Это ошибка:
06/28/2016 10:27:14
Type : System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message :
Source :
Help link :
Data : System.Collections.ListDictionaryInternal
TargetSite :
Stack Trace : The stack trace is unavailable.
Additional Info:
MachineName : XXX
TimeStamp : 6/28/2016 7:27:14 AM
FullName : Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
AppDomainName : /XXX-1-131115702788886173
ThreadIdentity : XXX
WindowsIdentity : XXXX
Inner Exception
---------------
Type : System.InvalidOperationException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Invalid attempt to call Read when reader is closed.
Source : System.Data
Help link :
Data : System.Collections.ListDictionaryInternal
TargetSite : Boolean ReadInternal(Boolean)
Stack Trace : at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
at System.Data.SqlClient.SqlDataReader.Read()
at System.Data.SqlClient.SqlCommand.CompleteExecuteScalar(SqlDataReader ds, Boolean returnSqlValue)
at System.Data.SqlClient.SqlCommand.ExecuteScalar()
at Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteScalar(IDbCommand command)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteScalar(DbCommand command)
at EnforcementService.DataAccess.InspectionRideDAL.InsertInspectionRide(InspectionRideBE be)
У меня есть поиск информации об этой ошибке и основная идея в том, что соединение закрыто, но я не могу понять почему?
Я был бы признателен за любую помощь или совет
Добавить 'Debug.Print (myConn.State)'. Вы увидите, что соединение закрыто. Теперь проследите назад. этот кусок кода, вероятно, невиновен. – usr
Привет! Я понимаю, что на данный момент исключение закрывается, соединение закрыто. Мне нужно понять причину закрытия. благодаря –