[英]How do I fix a .NET windows application crashing at startup with Exception code: 0xE0434352?
[英]My C# application is returning 0xE0434352 to Windows Task Scheduler but it is not crashing
我编写了一些通过 Windows 任务调度程序运行的 C# 应用程序。 他们正在成功运行(正如我从他们正在编写的日志文件中看到的那样),但 Windows 任务调度程序显示他们返回了0xE0434352
的最后一次运行结果。 我需要在我的 C# 应用程序中做些什么,以便它向 Windows 任务调度程序返回一个成功代码?
另一种选择是简单地使用可通过 Windows 事件查看器访问的应用程序日志。 .Net 错误将记录到应用程序日志中。
您可以在此处查看这些事件:
事件查看器(本地)> Windows 日志 > 应用程序
在新窗口中设置作业时,您有两个字段“程序/脚本”和“开始于(可选) ”。 将程序名称放在第一位,将程序位置放在第二位。 如果您不这样做并且您的程序不在带有 exe 的目录中启动,则它将找不到位于其中的文件。
Hans Passant 是正确的,我为 AppDomain.CurrentDomain.UnhandledException 添加了一个处理程序,如下所述http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception(v=vs.71).aspx我是能够找到正在发生的异常并纠正它。
我正在引用一个映射驱动器,我发现映射驱动器并不总是对运行计划任务的用户帐户可用,所以我使用了\\\\IPADDRESS
而不是MAPDRIVELETTER:
并且我已经启动并运行了。
如果它可以帮助其他人,当运行任务的服务没有对可执行位置的写权限时,我会收到此错误。 它试图在那里写一个日志文件。
我遇到了这个问题,这是由于 .Net 框架版本造成的。 我已将构建升级到框架 4.0,但这似乎影响了应用程序正在使用的某些通信 dll。 我回滚到框架 3.5,它运行良好。
我遇到了同样的错误,但我通过将文件读取路径从“ConfigFile.xml”更改为AppDomain.CurrentDomain.BaseDirectory.ToString() +“ConfigFile.xml”来修复它
在我的情况下,这个错误是由于文件路径错误,因为任务管理器从“System32”作为初始路径启动程序,但我们认为是文件夹。
我在使用 MVC 5 的 dotNet Core 2.2 中收到了相同的消息消息,但是没有任何内容记录到 Windows 事件查看器中。
我发现我已将 Project sdk 从Microsoft.NET.Sdk.Web
更改为Microsoft.NET.Sdk.Razor
(在projects.csproj
文件中可见)。 我把它改回来了,效果很好:)
就我而言,这是因为我有消息框。 一旦我注释掉该代码,它就开始工作了。 我记得当我按照这个线程中的建议查看事件日志时,这可能是一个问题。 谢谢大家!
我在处理 COM 对象时遇到了这个问题。 在某些情况下(我的错),我破坏了一个外部 .EXE 进程,在一个并行线程中,一个变量试图访问 com 接口 app.method 并发生了 COM 级崩溃。 任务计划程序注意到这一点并关闭了该应用程序。 但是如果你在控制台中运行应用程序并且不处理异常,应用程序将继续工作......
请注意,如果您使用非托管代码或外部对象(AD、Socket、COM...),则需要对其进行监控!
还有 PowerShell 中的消息框。 我将 PowerShell 脚本转换为 exe。 以管理员身份运行时,它工作正常,但在任务计划中我也收到此错误。 PowerShell 脚本中有一行写输出。 注释此行并编译新的 exe 任务计划后成功完成。
在我的情况下,这是权限问题,任务调度程序有一个用户在数据库所在的服务器上没有权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.