繁体   English   中英

我的 C# 应用程序将 0xE0434352 返回给 Windows 任务计划程序,但它没有崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM