Ich habe eine ASP.NET-Anwendung, die Daten für die Excel-Datei laden muss. Die Datei enthält ca. 20K Datensätze. Die App liest die Daten aus der Datei und durchläuft jeden Datensatz, führt Berechnungen und Validierungen durch und fügt dann jeden Datensatz in eine Datenbank ein. Alles funktioniert wie erwartet, bis die Insert-Methode die Ausnahme auslöst. Der Fehler wird nach 10 - 11 Minuten Laufzeit ausgelöst. Hinweis: Alle Ladevorgang läuft in einen Transaktionsbereich, die in der folgenden Weise definiert:Ungültiger Versuch, Read aufzurufen, wenn der Reader geschlossen ist Fehler beim Aufruf der ExecuteScalar-Methode
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.MaxValue))
Die ganze Zeit SQLConnection- geöffnet wird - ich habe dies sicherzustellen einen SQL Profiler. Um mit DB zu arbeiten verwenden wir ein Microsoft.Practices.EnterpriseLibrary.Data.Database Objekt. Diese ist ein Insert-Methode:
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;
}
Dies ist ein Fehler:
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)
Ich suche haben Informationen über diesen Fehler und die Hauptidee ist, dass die Verbindung geschlossen ist, aber ich kann nicht verstehen Warum?
ich Hilfe oder Ratschläge
Add 'Debug.Print (myConn.State)'. Sie werden feststellen, dass die Verbindung geschlossen ist. Jetzt zurückverfolgen. Dieses Stück Code ist wahrscheinlich unschuldig. – usr
Hallo! Ich verstehe, dass im Moment, in dem die Ausnahme ausgelöst wird, die Verbindung geschlossen ist. Ich muss den Grund des Schließens verstehen. Vielen Dank –