Ich habe meine erste Applikation mit EF6 von Grund auf selbst entworfen implementiert und versuche diese nun beim Kunden zum Laufen zu bringen.
Leider bricht die Applikation beim Starten mit einer SQL Exception ab.
Die Anwendung wurde mit dem Ziel Framework 4.5.2 implementiert
Der Rechner hat Windows 10 installiert und die Applikation versucht eine Verbindung zum SQL Server (2008 Version) aufzubauen. Ist evtl. der SQL Server zu alt?
Alle Angaben in der Connection sind richtig, und auch die Datenbank ist inkl. der __MigrationHistory genau gleich wie auf meiner Entwicklungsumgebung.
Muss trotzdem im OS enthaltenen .Net Framework, die "Entity Framework Runtime" & ggf. die "Entiity Framework Tools" auf jedem Rechner nachinstalliert werden?
Fehlermeldung:
Anwendung: xy.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.Data.SqlClient.SqlException
bei System.Data.SqlClient.SqlConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action1<System.Action>) bei System.Data.SqlClient.SqlInternalConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action
1<System.Action>)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(System.Data.SqlClient.TdsParserStateObject, Boolean, Boolean)
bei System.Data.SqlClient.TdsParser.TryRun(System.Data.SqlClient.RunBehavior, System.Data.SqlClient.SqlCommand, System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.BulkCopySimpleResultSet, System.Data.SqlClient.TdsParserStateObject, Boolean ByRef)
bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
bei System.Data.SqlClient.SqlDataReader.get_MetaData()
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.RunBehavior, System.String, Boolean, Boolean, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, Boolean, Int32, System.Threading.Tasks.Task ByRef, Boolean, Boolean, System.Data.SqlClient.SqlDataReader, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String, System.Threading.Tasks.TaskCompletionSource1<System.Object>, Int32, System.Threading.Tasks.Task ByRef, Boolean ByRef, Boolean, Boolean) bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteReader(System.Data.CommandBehavior, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(System.Data.CommandBehavior) bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior) bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher+<>c.<Reader>b__6_0(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext
1<System.Data.Common.DbDataReader>)
bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Dispatch[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.__Canon, System.Func
3<System.__Canon,System.__Canon,System.__Canon>, System.__Canon, System.Action3<System.__Canon,System.__Canon,System.__Canon>, System.Action
3<System.__Canon,System.__Canon,System.__Canon>)
bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext)
bei System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(System.Data.CommandBehavior)
bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior)
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)Ausnahmeinformationen: System.Data.Entity.Core.EntityCommandExecutionException
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)
bei System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Data.Entity.Core.Objects.ObjectContext, System.Data.Entity.Core.Objects.ObjectParameterCollection)
bei System.Data.Entity.Core.Objects.ObjectQuery1+<>c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<GetResults>b__1() bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func
1<System.__Canon>, System.Data.Entity.Infrastructure.IDbExecutionStrategy, Boolean, Boolean)
bei System.Data.Entity.Core.Objects.ObjectQuery1+<>c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<GetResults>b__0() bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func
1<System.__Canon>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetResults(System.Nullable
1<System.Data.Entity.Core.Objects.MergeOption>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__31_0() bei System.Data.Entity.Internal.LazyEnumerator
1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
bei System.Linq.Enumerable+WhereSelectEnumerableIterator2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext() bei System.Linq.Enumerable.Count[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable
1<System.__Canon>)
bei AenderungswesenUserVerwaltung.UserAdministration..ctor()
bei AenderungswesenUserVerwaltung.Program.Main()
Über einen Tipp oder Link wäre ich sehr froh...
Beste Grüße Dolce
Wer Rechtschreibfehler findet, darf sie behalten.
eine entity framework oder entity framework tools runtime gibt es nicht die abhängigkeiten werden mit dlls ausgeliefert
Du solltest die Exception (in UserAdministration..ctor())
mal abfangen und dessen Message
ausgeben bzw. loggen lassen.
Edit:
Ich benutze zum Loggen von Exceptions häufig diese Hilfsmethode, um auch alle InnerException.Message
-Texte zu erhalten:
public static string CreateExceptionText(Exception e, string title = null)
{
var str = new StringBuilder(64);
if (title != null)
str.AppendLine(title);
while (e != null)
{
str.AppendLine(e.Message);
e = e.InnerException;
}
return str.ToString();
}
Vielen dank Th69
Ich erweitere meine Applikation um die erweiterte Logger Funktion. Dann werde ich morgen sehen, ob beim Kunden weitere wertvolle Informationen geloggt werden.
Es ist immer Käse, wenn Applikationen beim Entwickler laufen, aber beim Kunden nicht starten wollen...
Gruß Dolce
Wer Rechtschreibfehler findet, darf sie behalten.
Leider hat meine Erweiterung zu keinem Ergebnis geführt. Da die Applikation nicht gestartet werden kann, werden auch keine Logdateien erzeugt.
Ebenfalls habe ich dem ganzen Applikationsorder beim Kunden die Rechte für den Benutzer "Jeder" auf Vollzugriff gesetzt.
Könnten die Fehlermeldungen auf fehlende dll's hindeuten?
Folgende Fehlermeldungen werden in das Event-Log geschrieben:> Fehlermeldung:
Name der fehlerhaften Anwendung: AenderungswesenUserVerwaltung.exe, Version: 1.0.0.0, Zeitstempel: 0x9fc4e8b6
Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 10.0.19041.572, Zeitstempel: 0x979ddb1d
Ausnahmecode: 0xe0434352
Fehleroffset: 0x00129ab2
ID des fehlerhaften Prozesses: 0x2558
Startzeit der fehlerhaften Anwendung: 0x01d6c3e3fb0f042a
Pfad der fehlerhaften Anwendung: C:\AenderungswesenUserVerwaltung.exe
Pfad des fehlerhaften Moduls: C:\Windows\System32\KERNELBASE.dll
Berichtskennung: 3d1ba573-d2bb-4f2c-9876-db0ec01bc472
Vollständiger Name des fehlerhaften Pakets:
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:
Fehlermeldung:
Anwendung: AenderungswesenUserVerwaltung.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.Data.SqlClient.SqlException
bei System.Data.SqlClient.SqlConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action1<System.Action>) bei System.Data.SqlClient.SqlInternalConnection.OnError(System.Data.SqlClient.SqlException, Boolean, System.Action
1<System.Action>)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(System.Data.SqlClient.TdsParserStateObject, Boolean, Boolean)
bei System.Data.SqlClient.TdsParser.TryRun(System.Data.SqlClient.RunBehavior, System.Data.SqlClient.SqlCommand, System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.BulkCopySimpleResultSet, System.Data.SqlClient.TdsParserStateObject, Boolean ByRef)
bei System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
bei System.Data.SqlClient.SqlDataReader.get_MetaData()
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(System.Data.SqlClient.SqlDataReader, System.Data.SqlClient.RunBehavior, System.String, Boolean, Boolean, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, Boolean, Int32, System.Threading.Tasks.Task ByRef, Boolean, Boolean, System.Data.SqlClient.SqlDataReader, Boolean)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String, System.Threading.Tasks.TaskCompletionSource1<System.Object>, Int32, System.Threading.Tasks.Task ByRef, Boolean ByRef, Boolean, Boolean) bei System.Data.SqlClient.SqlCommand.RunExecuteReader(System.Data.CommandBehavior, System.Data.SqlClient.RunBehavior, Boolean, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteReader(System.Data.CommandBehavior, System.String) bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(System.Data.CommandBehavior) bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior) bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher+<>c.<Reader>b__6_0(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext
1<System.Data.Common.DbDataReader>)
bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Dispatch[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.__Canon, System.Func
3<System.__Canon,System.__Canon,System.__Canon>, System.__Canon, System.Action3<System.__Canon,System.__Canon,System.__Canon>, System.Action
3<System.__Canon,System.__Canon,System.__Canon>)
bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(System.Data.Common.DbCommand, System.Data.Entity.Infrastructure.Interception.DbCommandInterceptionContext)
bei System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(System.Data.CommandBehavior)
bei System.Data.Common.DbCommand.ExecuteReader(System.Data.CommandBehavior)
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)Ausnahmeinformationen: System.Data.Entity.Core.EntityCommandExecutionException
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(System.Data.Entity.Core.EntityClient.EntityCommand, System.Data.CommandBehavior)
bei System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Data.Entity.Core.Objects.ObjectContext, System.Data.Entity.Core.Objects.ObjectParameterCollection)
bei System.Data.Entity.Core.Objects.ObjectQuery1+<>c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<GetResults>b__1() bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func
1<System.__Canon>, System.Data.Entity.Infrastructure.IDbExecutionStrategy, Boolean, Boolean)
bei System.Data.Entity.Core.Objects.ObjectQuery1+<>c__DisplayClass41_0[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<GetResults>b__0() bei System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func
1<System.__Canon>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetResults(System.Nullable
1<System.Data.Entity.Core.Objects.MergeOption>)
bei System.Data.Entity.Core.Objects.ObjectQuery1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__31_0() bei System.Data.Entity.Internal.LazyEnumerator
1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
bei System.Linq.Enumerable+WhereSelectEnumerableIterator2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext() bei System.Linq.Enumerable.Count[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable
1<System.__Canon>)
bei AenderungswesenUserVerwaltung.UserAdministration..ctor()
bei AenderungswesenUserVerwaltung.Program.Main()
Wer Rechtschreibfehler findet, darf sie behalten.
Es ist immer Käse, wenn Applikationen beim Entwickler laufen, aber beim Kunden nicht starten wollen...
Man das auch so ausdrücken:
Es ist immer Käse, wenn Entwickler im Jahr 2020 immer noch Logging-Mechanismen nicht oder falsch implementieren, sodass kein Mensch erkennen kann, was auf einem Nicht-Dev-System falsch läuft 😉
Sql-Exceptions vermeidet man übrigens vor Auslieferung, indem man Integrationstests fährt.
Seit über 10 Jahren gibts den "Standard" des Full Structured Loggings und seit über 6 Jahren die Implementierung von Serilog für die .NET Welt.
Wer da immer noch nicht richtig loggt, der hat das entsprechend auch verdient 😉
Aber zum Problem:
Eine System.Data.Entity.Core.EntityCommandExecutionException
hat immer eine Exception-Message; hier System.Data.SqlClient.SqlException
.
Eine System.Data.SqlClient.SqlException
hat immer eine Exception-Message, zB. "invalid column name".
Da diese Message in Deinem Beitrag fehlt kann Dir hier auch keiner beantworten, was der Exception-Grund ist.
Wahrscheinlich kannst Du das Problem auch selbst beheben, wenn Du die Message liest (wofür Du sie natürlich loggen musst) 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich will euch nicht vorenthalten, was der Grund war.
Der Grund war, das mein Projekt korrupt war. Ich bin heute darüber gestolpert, als ich eine setup.exe für diese Applikation erstellen wollte. Da gab es ordentlich viele Fehlermeldungen, das gewisse dll's nicht in das Zielverzeichnis kopiert werden können da nicht vorhanden.
Nun, die dll's waren im Source Verzeichnis alle vorhanden.
Also habe ich pragmatisch ein neues Projekt angelegt und step-by-step alle Komponenten vom alten Projekt in das neue Projekt kopiert.
Anschließend konnte eine setup.exe erzeugt werden, welche beim Kunden auch zum gewünschten Ergebnis geführt hat.
Für eure Unterstützung bedanke ich mich recht herzlich
Wer Rechtschreibfehler findet, darf sie behalten.
Versteh ich das richtig, dass Du lokal das Setup für den Kunden erzeugst und nicht über ein Buildsystem?
Dann solltest das mal in Angriff nehmen 😃
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Auf jeden Fall, nur man kann nicht alles auf einmal machen. 😃
Wer Rechtschreibfehler findet, darf sie behalten.