wake-up-neo.com

Wie behebe ich eine .NET-Windows-Anwendung, die beim Start mit dem Ausnahmecode 0xE0434352 abstürzt?

Ich habe eine .NET Windows Forms -Anwendung in Visual Studio 2010 erstellt. Ich habe auch ein entsprechendes Setup-/Installationspaket über Visual Studio 2010 erstellt. Diese Anwendung ist als 32-Bit-Anwendung (x86) aufgebaut. (Wir verwenden Windows Forms-Steuerelemente von Drittanbietern, die nur 32-Bit umfassen).

Ich kann das Setup-Paket ausführen und es erfolgreich in anderen Windows 7 64-Bit-Umgebungen und 32-Bit-Windows XP-Boxen bereitstellen. Die installierte Anwendung läuft einwandfrei.

Wenn ich jedoch versuche, Windows Server 2008 R2 - 64-Bit auszuführen, stürzt die Anwendung beim Start ab. Es wurde erfolgreich über das Installationsprogramm ohne Fehler installiert.

Es scheint beim Laden der Anwendung abzustürzen. Ich füge ein Meldungsfeld als erste Zeile in der Anwendung ein, um zu sehen, ob das Laden abgeschlossen ist. Das Meldungsfeld wird nicht angezeigt. Ich gehe davon aus, dass es beim Laden von/init der Anwendung auftritt.

Bis jetzt habe ich nicht viel gefunden. Aus den Details sehe ich Folgendes:

Exception Code: E0434352

Ich habe herumgetrieben/gegoogelt, um zu sehen, ob etwas offensichtlich ist, aber ich habe nichts gesehen. Ich habe einige Verweise auf einen möglichen Stapelüberlauf in der CLR gesehen.

Die Windows Forms-Anwendung enthält die folgenden Referenzen:

  • DevExpress
  • Infragistics Winforms-Steuerelemente
  • Oracle DataAccess-DLL
  • RabbitMQ

Was ist das Problem? Wie gehe ich vor, um das herauszufinden? Wie kann ich debuggen, um weitere nützliche Informationen zu erhalten?

65
JohnB

0xE0434352 ist der Ausnahmecode für alle .NET-Ausnahmen so dass Sie nicht viel darüber erfahren. Wie haben Sie diesen Ausnahmecode erhalten? Das Ereignisprotokoll

Am besten verwenden Sie einen Debugger, um weitere Informationen zu erhalten. Wenn der Visual Studio-Debugger Ihnen nicht weiterhilft, müssen Sie möglicherweise WinDbg mit SOS überprüfen. Siehe hier und hier für eine Einführung. Lassen Sie es bei der Ausnahme kaputt gehen und sehen Sie, ob Sie weitere Informationen zum Warum erhalten können.

Wenn Sie vermuten, dass beim Laden von Baugruppen ein Problem auftritt, können Sie das Fusion-Protokoll auschecken.

59
Lars Truijens

Wenn Sie diesen Fehler von der Ereignisanzeige erhalten, sollte ein anderes Fehlerereignis (mindestens eines) aus der Quelle ".NET Runtime" angezeigt werden. Sehen Sie sich diese Fehlermeldung an, da sie die Exception-Informationen enthält.

53
Tergiver

Eine kurze Erklärung für 0xE0434352 ist im Blogbeitrag Warum bekomme ich immer den Ausnahmecode e0434352? sowie Anweisungen zum Debuggen über WinDbg und cdb .

6
Igor Dvorkin

Es sieht so aus, als würde dieser Fehler 0xe0434352 auf eine Reihe verschiedener Fehler zutreffen.

Falls es jemandem hilft, bin ich auf diesen Fehler gestoßen, als ich versuchte, meine Anwendung in einer neuen Windows 10-Installation zu installieren. Es funktionierte auf anderen Maschinen und sah so aus, als würde die App für einen Moment beginnen, bevor sie starb. Nach langem Ausprobieren stellte sich heraus, dass die App DirectX9 benötigte. Obwohl eine spätere Version von DirectX vorhanden war, musste sie Version 9 haben. Ich hoffe, das erspart jemandem Frustration.

4
Mike Kelly

Ich bin mir nicht sicher, ob dies jemandem helfen wird oder nicht, aber da es mein Problem war, ist es erwähnenswert:

Ich habe diese Fehlermeldung erhalten und es stellte sich heraus, dass es ein Problem mit der Plattform war, für die die EXE-Datei erstellt wurde. Wir haben es für x86 aufbauen lassen, und es musste x64 sein, da im Projekt eine Oracle-Referenz vorhanden war. Als wir diese Änderung vorgenommen haben, ist das Problem behoben. So sehen Sie, ob Sie ähnliche Konflikte haben.

3
John

Ich hatte einen ganzen Tag lang damit zu kämpfen, dass meine Benutzer Debug-Versionen der Software ausführen sollten. Weil es so aussah, als ob es nicht die erste Zeile lief. Nur ein Absturz ohne Informationen.

Dann wurde mir klar, dass der Fehler in der InitializeComponent des Formulars lag.

Um eine Ausnahme zu erhalten, entfernen Sie diese Zeile (oder kommentieren Sie sie aus): 

System.Diagnostics.DebuggerStepThrough()

Sobald Sie die Linie loswerden, erhalten Sie eine normale Ausnahme.

3

Ich bekam dies, als die App implementiert wurde. In meinem Fall habe ich auf der Registerkarte "Projektsicherheit" die Option "Dies ist eine vollständige Vertrauensanwendung" ausgewählt, und das wurde behoben.

2
Joel

Um das Problem für mich zu beheben (da einige Anwendungen diese Ausnahme plötzlich auslösten, zum Beispiel CorelDraw X6), habe ich die .NET 4.5-Laufzeitumgebung deinstalliert und die .NET 4-Laufzeitumgebung installiert. Die beiden Versionen können nicht nebeneinander installiert werden, sie verwenden jedoch die gleichen Versionsnummern in GAC . Dies führt zu Problemen, da einige Funktionen in 4.5 abgewertet wurden.

DLL Hell ist zurückgekehrt ...

0
user857629

Ich weiß, dass dies ein etwas alter Thread ist, aber ich hatte dieses Problem auch mit einer C #/WPF-App, die ich erstellt habe. Die App funktionierte auf dem Entwicklungscomputer einwandfrei, konnte jedoch auf dem Testcomputer nicht gestartet werden. Das Anwendungsprotokoll in der Ereignisanzeige ergab einen etwas nebulösen .NET-Laufzeitfehler von System.IO.DirectoryNotFoundException.

Ich habe versucht, eine Debugsoftware zu verwenden, aber die App würde nicht lange genug laufen, um den Debugger an den Prozess anzuhängen. Nachdem ich einen Tag lang mit dem Kopf gegen meinen Schreibtisch geschlagen und viele Webseiten wie diese angesehen hatte, musste ich VS2019 auf meinem Testcomputer installieren, um das Problem zu beheben. Ich habe dann die EXE-Datei aus ihrem Ordner (sie befand sich tief im Ordner Users [user]\AppData\Apps\2.0 ...) in die geöffnete VS2019-Instanz gezogen und von dort aus gestartet. Es wurde sofort ein Dialogfeld mit der Ausnahme und der Ursache angezeigt.

In meinem Fall wurde beim Hinzufügen eines Symbols zu einem der Formulare der vollständige Pfad zum Symbol in die XAML eingefügt und nicht nur der Name des Symbols. Ich hatte die Symboldatei in den Projektordner kopiert, aber da der Projektordner auf dem Testcomputer nicht vorhanden ist, war dies die Hauptursache für den Fehler. Dann entfernte ich den Pfad aus der XAML, ließ nur den Symbolnamen eins, erstellte die Lösung neu und veröffentlichte sie erneut. Auf dem Testcomputer lief sie jetzt einwandfrei. Natürlich gibt es neben der Fehlerursache viele andere Ursachen, aber diese Methode zur Fehlerbehebung sollte hoffentlich die Hauptursache des Fehlers identifizieren, da die Windows-Ereignisanzeige eine etwas vage Antwort gibt.

Verwenden Sie zusammenfassend Visual Studio auf dem Testcomputer als eine Art Debugger. Aber damit es richtig funktioniert, musste ich die .exe-Datei in das IDE ziehen und von dort aus starten (ausführen). Ich glaube, dass dies auch mit VS2017 sowie VS2019 funktionieren wird. Hoffentlich hilft das jemandem, der dieses Problem noch hat.

0
Craig Prusansky

Problem:

.NET-Anwendungscode bricht ab, bevor er mit der Ausführung beginnt [Konsolenanwendung oder Windows-Anwendung]

Fehler empfangen: Abgebrochen mit Fehlercode "E0434352"

Ausnahme : Unbekannte Ausnahme

Szenario 1: 

Wenn bereits eine Anwendung ausgeführt wird, die einige der abhängigen Ressourcen verwendet hat und diese Ressourcen noch mit der ausgeführten Anwendung verwendet werden, wenn eine andere Anwendung oder das gleiche Exe aus einer anderen Quelle ausgelöst wird, löst eine der Anwendungen den Fehler aus

Szenario 2: 

Wenn eine Anwendung von einem Scheduler oder automatischen Jobs ausgelöst wird, befindet sich diese möglicherweise im Hintergrund im Ausführungsstatus. Wenn Sie versuchen, dieselbe Anwendung erneut auszulösen, wird der Fehler möglicherweise ausgelöst.

Lösung:

Erstellen Sie eine Anwendung, wenn und sobald die Anwendung alle ihre Ressourcen freigibt, sobald sie abgeschlossen ist Beenden Sie den Hintergrundprozess, sobald die Anwendung geschlossen wird Überprüfen Sie die Ausführung der Anwendung aus mehreren Quellen, z Tools zur gleichen Zeit ... Überprüfen Sie die Abhängigkeiten zwischen Anwendung und Ressource und bereinigen Sie den Code, falls erforderlich.

Also ... ich hatte in der Ereignisanzeige festgestellt, dass dieser Absturz einem Fehler "System.IO.FileNotFoundException" entsprach. 

Also habe ich ProcMon ausgelöst und festgestellt, dass eine der Programm-DLLs vcruntime140 nicht laden konnte. Also habe ich einfach vs15 redist installiert und es hat funktioniert. 

0
mirh

Wir haben diesen Fehler erhalten, als die Verbindungszeichenfolge zu unserer Datenbank falsch war. Um dies herauszufinden, wurde die dotnet blah.dll ausgeführt, die eine Stacktrace lieferte, die uns zeigte, dass die angegebene SQL Server-Instanz nicht gefunden wurde. Hoffe das hilft jemandem.

0
dellyjm