我编写了一个简单的 .NET Core 控制台应用程序(它写入一些日志文件、访问数据库并发送一些电子邮件)。在 Windows 中双击 .exe 即可触发任务。
但是,当尝试通过任务计划程序触发任务时,它会立即失败并显示代码0xC0000005
。当实际按计划触发任务或右键单击任务计划程序应用程序中的任务并单击“运行”时,会发生此失败。应用程序尝试执行的第一件事是将某些内容写入日志文件,但这从未发生过。
同一台服务器还有许多其他 .NET 控制台应用程序(不是 .NET 核心),它们配置了完全相同的权限和用户帐户,并且运行良好。
事件日志中有这样一条记录:
错误应用程序名称:StorePlay.ClientEmailer.exe,版本:
1.1.0.1179,时间戳:0x58224b03 错误模块名称:未知,版本:0.0.0.0,时间戳:0x00000000 异常代码:0xc0000005
故障偏移量:0x00007ffaef1d8955 错误进程 ID:0xe0c 错误应用
程序启动时间:0x01d301e534cdde90 错误应用程序路径:
C:\storePlay\Tasks\Client Emailer\StorePlay.ClientEmailer.exe 错误
模块路径:未知报告 ID:1bc8be44-744c-452e-a945-997d64d1d87b
错误包全名:错误包相关应用程序 ID:
这一切都在运行 Windows Server 2016 的计算机上进行
答案1
我搜索并尝试了各种解决方案,对我有用的方法是设置“开始于”选项。通常,有人可以在浏览后在“程序/脚本”文本框中获得完整路径,这是我见过的大多数任务的运行方式。看来 .Net Core 控制台应用程序需要使用可选路径运行,这样它才能找到 appsettings.json(如果您正在使用)。
答案2
错误可能是由于权限引起的。通常,taskscheduler 使用系统帐户运行任务,当您在 Windows 上以通常的方式运行 exe 时,您会使用您的凭据运行它。您应该能够在任务计划程序下自行设置任务凭据,或者创建具有所需权限的用户。
编辑:直到发布答案后才看到问题的年龄,但如果它能帮助其他人,那就太好了:)