簡體   English   中英

如何修復 .NET windows 應用程序在啟動時崩潰並出現異常代碼:0xE0434352?

[英]How do I fix a .NET windows application crashing at startup with Exception code: 0xE0434352?

I've built a .NET Windows Forms application in Visual Studio 2010. I also built a corresponding setup/install package via Visual Studio 2010. This is built as a 32-bit (x86) application. (我們使用僅 32 位的第三方 Windows Forms 控件)。

我能夠運行設置 package 並成功部署到其他 Windows 7 64 位環境和 32 位 Windows XP 機器。 安裝的應用程序在這些上運行良好。

但是,當我嘗試運行Windows Server 2008 R2 - 64 位時,應用程序在啟動時崩潰。 它通過安裝程序成功安裝,沒有任何錯誤。

加載應用程序時似乎崩潰。 我將一個消息框作為應用程序的第一行,以查看它是否通過加載。 消息框沒有出現,所以我假設它發生在應用程序的加載/初始化期間。

到目前為止,我還沒有找到太多關於 go 的內容。 從詳細信息中,我看到以下內容:

Exception Code: E0434352

我到處釣魚/谷歌搜索,看看是否有任何明顯的東西,但我什么也沒看到。 我在CLR中看到了一些對可能堆棧溢出的引用。

Windows Forms 應用程序使用以下參考構建:

  • 開發快遞
  • Infragistics Winforms 控件
  • ORACLE 數據訪問 DLL
  • RabbitMQ

問題是什么? 我該如何解決這個問題? 如何調試以獲得更多有用的信息?

如果您從事件查看器中收到該錯誤,您應該會從源“.NET 運行時”中看到另一個錯誤事件(至少一個)。 查看該錯誤消息,因為它將包含Exception信息。

0xE0434352 是所有 .NET 異常的異常代碼,所以不會告訴你太多。 你是怎么得到這個異常代碼的? 事件日志?

最好的辦法是使用調試器來獲取更多信息。 如果 Visual Studio 調試器對您沒有幫助,那么您可能需要使用SOS檢查WinDbg 有關介紹,請參見此處此處 讓它在異常上中斷,看看你是否可以獲得更多關於原因的信息。

如果您在加載程序集時懷疑這是一個問題,您可能需要查看Fusion Log

我不確定這是否會幫助任何人,但由於這是我的問題,我認為值得一提:

我收到了這個錯誤,結果證明是構建 EXE 的平台有問題。 我們為 x86 構建了它,它需要是 x64,因為項目中有 Oracle 參考。 當我們做出改變時,問題就消失了。 所以,看看你是否有任何類似的沖突。

看起來這個錯誤 0xe0434352 適用於許多不同的錯誤。

如果它可以幫助任何人,當我嘗試在新的 Windows 10 安裝上安裝我的應用程序時遇到了這個錯誤。 它可以在其他機器上運行,並且看起來該應用程序會在死前立即啟動。 經過多次試驗和錯誤,問題原來是該應用程序需要 DirectX9。 盡管存在更高版本的 DirectX,但它必須具有版本 9。希望這可以為人們節省一些挫敗感。

我整天都在與這個問題作斗爭,要求我的用戶運行該軟件的調試版本。 因為它看起來好像沒有運行第一行。 只是沒有信息的崩潰。

然后我意識到錯誤出現在表單的 InitializeComponent 內部。

獲得異常的方法是刪除這一行(或將其注釋掉):

System.Diagnostics.DebuggerStepThrough()

一旦你擺脫了這條線,你就會得到一個正常的異常。

問題:

.Net 應用程序代碼在開始執行之前中止 [控制台應用程序或 Windows 應用程序]

收到錯誤:中止,錯誤代碼為“E0434352”

異常:未知異常

場景一:

當一個應用程序已經執行時,它已經使用了一些依賴資源並且這些資源仍在與執行的應用程序一起使用,當另一個應用程序或相同的 exe 從某個其他來源觸發時,其中一個應用程序會引發錯誤

場景二:

當應用程序被調度程序或自動作業觸發時,它可能在后台執行state,同時當您再次嘗試觸發相同的應用程序時,可能會觸發錯誤。

解決方案:

創建一個應用程序,一旦完成,應用程序在何時何地釋放其所有資源 關閉應用程序后殺死所有后台進程 檢查並避免同時從批處理、任務計划程序和外部工具等多個來源執行應用程序。 檢查應用程序和資源依賴關系,並在需要時清理代碼。

部署應用程序時我得到了這個。 就我而言,我在項目安全選項卡上選擇了“這是一個完全信任的應用程序”,並修復了它。

當我們數據庫的連接字符串不正確時,我們收到此錯誤。 解決這個問題的關鍵是運行 dotnet blah.dll,它提供了一個堆棧跟蹤,顯示找不到指定的 sql 服務器實例。 希望這可以幫助某人。

為了解決我的問題(因為許多應用程序突然開始拋出此異常,例如 CorelDraw X6 就是其中之一),我卸載了 .NET 4.5 運行時並安裝了 .NET 4 運行時。 這兩個版本不能並排安裝,但它們在GAC中使用相同的版本號。 這會導致一些問題,因為某些功能已在 4.5 中折舊。

DLL 地獄又回來了……

所以.. 我在事件查看器中注意到此崩潰對應於“System.IO.FileNotFoundException”錯誤。

所以我解雇了ProcMon並注意到其中一個程序 dll 無法加載 vcruntime140。 所以我簡單地安裝了vs15 redist,它就可以工作了。

我知道這是一個有點舊的線程,但是我正在創建的 ac#/WPF 應用程序也遇到了這個問題。 該應用程序在開發機器上運行良好,但無法在測試機器上啟動。 事件查看器中的應用程序日志給出了一個有點模糊的 .NET 運行時錯誤 System.IO.DirectoryNotFoundException。

我嘗試使用一些調試軟件,但應用程序運行時間不夠長,無法將調試器附加到進程。 在將我的頭撞在我的桌子上一天並查看了許多像這樣的 web 頁面之后,我最終解決這個問題的方法是在我的測試機器上安裝 VS2019。 然后,我將 .exe 文件從其文件夾(位於 Users[user]\AppData\Apps\2.0... 文件夾的深處)拖到打開的 VS2019 實例並從那里啟動它。 隨即,它出現了一個對話框,給出了異常和原因。

就我而言,當我向 forms 之一添加圖標時,圖標的完整路徑被放入 XAML 而不僅僅是圖標名稱。 我已經將圖標文件復制到項目文件夾中,但由於測試機器上不存在項目文件夾,這是錯誤的根本原因。 然后我從 XAML 中刪除了路徑,只留下圖標名稱一個,重建解決方案並重新發布它,它現在在測試機器上運行良好。 當然,除了給我錯誤的原因之外還有很多原因,但是這種故障排除方法應該有望確定錯誤的根本原因,因為 Windows 事件查看器給出了一個有點模糊的答案。

總而言之,在測試機器上使用 Visual Studio 作為調試器。 但是,為了讓它正常工作,我必須將 .exe 文件拖到 IDE 並從那里啟動(運行)它。 我相信這也適用於 VS2017 和 VS2019。 希望這可以幫助仍然遇到此問題的人。

運行命令行應用程序時,它會立即退出,我在事件查看器中看到了這個異常,但沒有收到其他反饋。 就我而言,以管理員身份運行命令提示符解決了這個問題

我相信從中得出的一個結論就是,由於權限問題,您可能會遇到此異常。

幾個小時后,由於不同的原因,我們在更新版本的控制台應用程序中遇到了相同的異常。 這次竟然是dll版本不兼容。 使用所需的較新 dll 版本解決了該問題。

也許這個一般錯誤是由於代碼沒有優雅地處理異常而出現的; 最好的解決方法可能是處理異常至少足以提供更好的錯誤消息。

在我的情況下,我沒有 memory 並且我的 Windows 系統頁面文件被禁用。 重新啟用后,錯誤消失了。

為了更改頁面文件設置:

  • 單擊開始,在開始菜單中鍵入高級系統設置,然后按 Enter 鍵將其打開。
  • 單擊性能下的設置按鈕。
  • 單擊高級選項卡,然后單擊虛擬 memory 部分中的更改按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM