如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码:0xE0434352?
Posted
技术标签:
【中文标题】如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码:0xE0434352?【英文标题】:How do I fix a .NET windows application crashing at startup with Exception code: 0xE0434352? 【发布时间】:2011-09-08 20:26:37 【问题描述】:我在 Visual Studio 2010 中构建了一个 .NET Windows Forms 应用程序。我还通过 Visual Studio 2010 构建了一个相应的设置/安装包。这是作为 32 位 (x86) 应用程序构建的。 (我们仅使用 32 位的第三方 Windows 窗体控件)。
我能够运行安装包并成功部署到其他 Windows 7 64 位环境和 32 位 Windows XP 机器。已安装的应用程序在这些设备上运行良好。
但是,当我尝试运行 Windows Server 2008 R2 - 64 位时,应用程序在启动时崩溃。它通过安装程序成功安装,没有任何错误。
加载应用程序时似乎崩溃了。我将一个消息框作为应用程序的第一行,以查看它是否通过加载。消息框没有出现,所以我假设它发生在应用程序的加载/初始化期间。
到目前为止,我还没有发现太多可做的事情。从详细信息中我看到以下内容:
Exception Code: E0434352
我已经四处搜寻/谷歌搜索,看看是否有任何明显的东西,但我什么也没看到。我在CLR 中看到了一些对可能的堆栈溢出的引用。
Windows 窗体应用程序是使用以下参考构建的:
DevExpress Infragistics Winforms 控件 ORACLE 数据访问 DLL RabbitMQ有什么问题? 我该如何解决这个问题? 如何调试以获得更多有用的信息?
【问题讨论】:
哪些引用使用非托管代码?运行WinDbg
,加载你的应用,看看有没有输出错误信息。
另外,如果它原来是 ORACLE 模块,则可能相关:***.com/questions/2100955/…
一个消息框?严肃的?去看看 System.Diagnostics.Debug。
Debugger.Launch() 将在运行该行时提示将您的进程附加到 Visual Studio 调试器,因此可以将其粘贴在您的入口点附近以在启动时附加进程。
已经有一段时间了,但是 - 你设法解决了这个问题吗?我有一个客户报告了这种行为。在开发机器上很难重现。请随时分享您的解决方案 - 我想这值得投票。谢谢!
【参考方案1】:
0xE0434352 是the exception code for all .NET exceptions,所以这不会告诉你太多。你是怎么得到这个异常代码的?事件日志?
最好的办法是使用调试器来获取更多信息。如果 Visual Studio 调试器不能帮助您,那么您可能需要检查 WinDbg 和 SOS。有关介绍,请参阅 here 和 here。让它在异常上中断,看看您是否可以获得有关原因的更多信息。
如果您怀疑加载程序集时出现问题,您可能需要查看Fusion Log。
【讨论】:
在尝试调试器之前检查 Tergiver 的答案【参考方案2】:我在应用部署时得到了这个。就我而言,我在项目安全选项卡上选择了“这是一个完全信任的应用程序”,并且修复了它。
【讨论】:
这可能不是真正的解决方案:您可能希望设置您的应用程序/它的安全要求,以便它在中等信任环境中正常运行。但这是一个有用的起点 - 谢谢!【参考方案3】:如果您从事件查看器中收到该错误,您应该会从源“.NET 运行时”中看到另一个错误事件(至少一个)。查看该错误消息,因为它将包含 Exception
信息。
【讨论】:
这对我很有帮助,谢谢,因此我发现我缺少一个依赖项(FileNotFound 异常)【参考方案4】:为了解决我的问题(因为许多应用程序突然开始抛出此异常,例如 CorelDraw X6 就是其中之一),我卸载了 .NET 4.5 运行时并安装了 .NET 4 运行时。这两个版本不能并排安装,但它们在GAC 中使用相同的版本号。这会导致一些问题,因为某些功能已在 4.5 中折旧。
DLL Hell 已返回...
【讨论】:
【参考方案5】:我整天都在与这个问题作斗争,要求我的用户运行该软件的调试版本。因为它看起来好像没有运行第一行。只是没有信息的崩溃。
然后我意识到错误在表单的 InitializeComponent 内部。
获取异常的方法是删除这一行(或将其注释掉):
System.Diagnostics.DebuggerStepThrough()
一旦你摆脱了这条线,你就会得到一个正常的异常。
【讨论】:
【参考方案6】:当我们的数据库的连接字符串不正确时,我们收到此错误。解决这个问题的关键是运行 dotnet blah.dll,它提供了一个堆栈跟踪,显示找不到指定的 sql server 实例。希望这对某人有所帮助。
【讨论】:
【参考方案7】:所以.. 我在事件查看器中注意到此崩溃对应于“System.IO.FileNotFoundException”错误。
所以我解雇了ProcMon 并注意到其中一个程序 dll 无法加载 vcruntime140。 所以我简单地安装了vs15 redist,它就可以工作了。
【讨论】:
【参考方案8】:我不确定这是否会对任何人有所帮助,但由于这是我的问题,我认为值得一提:
我收到了这个错误,结果证明是构建 EXE 的平台有问题。我们让它为 x86 构建,它需要是 x64,因为项目中引用了 Oracle。当我们做出改变时,问题就消失了。所以,看看你有没有类似的冲突。
【讨论】:
【参考方案9】:看起来这个错误 0xe0434352 适用于许多不同的错误。
如果它对任何人有帮助,我在尝试在新的 Windows 10 安装上安装我的应用程序时遇到了这个错误。它可以在其他机器上运行,并且看起来该应用程序会在死前立即启动。经过多次试验和错误,问题原来是该应用程序需要 DirectX9。虽然有更高版本的 DirectX,但它必须有版本 9。希望这可以避免一些挫折。
【讨论】:
这是一个非常特殊的案例。不确定有多少人会面临这种特殊情况。【参考方案10】:问题:
.Net 应用程序代码在开始执行之前中止[控制台应用程序或 Windows 应用程序]
收到错误:以错误代码“E0434352”中止
异常:未知异常
场景一:
当一个应用程序已经被执行,它已经使用了一些依赖资源并且这些资源仍然被执行的应用程序使用,当另一个应用程序或同一个 exe 被其他来源触发时,其中一个应用程序会抛出错误
场景二:
当一个应用程序被调度程序或自动作业触发时,它可能在后台处于执行状态,同时当您再次尝试触发同一个应用程序时,可能会触发错误。
解决方案:
创建一个应用程序,应用程序在何时何地完成后立即释放其所有资源 关闭应用程序后杀死所有后台进程 检查并避免同时从多个来源(如批处理、任务计划程序和外部工具)执行应用程序。 检查应用程序和资源依赖关系,并在需要时清理代码。
【讨论】:
在我的情况下,应用程序文件夹或其中的文件被锁定/打开 - 因为系统不允许重命名它(检查文件夹和子文件夹是否免费或打开/锁定的简单测试)。再次注销/登录服务器后,它会释放锁 是的,我们收到这个错误代码是因为我们试图向已经很忙的应用程序发送命令。【参考方案11】:我知道这是一个有点旧的线程,但我在创建的 c#/WPF 应用程序中也遇到了这个问题。该应用程序在开发机器上运行良好,但无法在测试机器上启动。事件查看器中的应用程序日志给出了一个有点模糊的 .NET 运行时错误 System.IO.DirectoryNotFoundException。
我尝试使用一些调试软件,但该应用程序运行时间不够长,无法将调试器附加到进程。在把我的头撞在我的桌子上一天并查看了许多这样的网页之后,我最终解决这个问题的方法是在我的测试机器上安装 VS2019。然后,我将 .exe 文件从其文件夹(位于 Users[user]\AppData\Apps\2.0... 文件夹的深处)拖到打开的 VS2019 实例并从那里启动它。随即,它出现了一个对话框,给出了异常和原因。
在我的例子中,当我向其中一个表单添加图标时,图标的完整路径被放入 XAML 而不仅仅是图标名称。我已经将图标文件复制到项目文件夹中,但是由于测试机器上不存在项目文件夹,这是错误的根本原因。然后我从 XAML 中删除了路径,只留下了一个图标名称,重建了解决方案并重新发布了它,它现在在测试机器上运行得很好。当然,除了给我错误的原因之外,还有很多原因,但这种故障排除方法应该有望找出错误的根本原因,因为 Windows 事件查看器给出的答案有些模糊。
总而言之,将测试机器上的 Visual Studio 用作各种调试器。但是,为了让它正常工作,我必须将 .exe 文件拖到 IDE 中并从那里启动(运行)它。 我相信这也适用于 VS2017 和 VS2019。希望这对仍然遇到此问题的人有所帮助。
【讨论】:
【参考方案12】:运行命令行应用程序时,它会立即退出,我在事件查看器中看到了这个异常,但没有收到其他反馈。就我而言,以管理员身份运行命令提示符解决了问题。
我相信其中一个收获就是您可能会因为权限问题而获得此异常。
几个小时后,由于不同的原因,我们在更新版本的控制台应用程序中遇到了相同的异常。这次竟然是dll版本不兼容。 使用所需的较新 dll 版本解决了问题。
也许这个一般性错误是由于代码没有优雅地处理异常造成的;最好的解决方法可能是处理异常至少足以提供更好的错误消息。
【讨论】:
以上是关于如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码:0xE0434352?的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 - 重新登录时,CORS 策略已阻止访问“https://login.windows.net......”获取