旧说明:
我有一个.NET应用程序,我自己写,我试图设置为在Windows Server 2008 R2上作为计划任务运行。 当我从命令行自己运行应用程序,它工作得很好。 但是,当我设置任务时,它在启动的1秒内完成任务,并表示成功完成,当然该应用程序没有运行。 因此,调度程序或应用程序不会logging任何错误。 如果我拿出参数(“auto”),那么它“运行”任务,但是从不打开控制台来显示菜单。
这是我迄今为止所尝试的:
在服务器pipe理方面,我仍然很绿,所以我可能忽略了一些东西,但是我不知道那是什么。 我在这里发现了一个似乎是相关的问题(graphics用户界面没有为一个计划任务加载),但是有点不同,因为至less那个实际上运行了一部分任务。
更新:
经过一些挖掘,我发现应用程序实际上一直在运行,但由于我的原因,我不知道.NET中的默认设置命名空间,应用程序存储/读取Web服务的configuration文件中的位置凭据会根据您坐在那里运行应用程序还是应用程序通过TS运行而有所不同。 仍然试图找出解决办法
无论如何,这就是我现在所处的位置:只要任务计划程序尝试运行应用程序,应用程序就会吐出SSL / TLS错误。 我有一个存储在应用程序主目录(E:\ Appname)的子目录中的证书,与凭据的情况一样,手动运行应用程序不会导致连接问题。 我已经确保证书和文件夹已经完全控制列出的任务所有者。
我在这里错过了什么吗?
如果您试图debugging在SYSTEM安全上下文中运行的失败任务(这是计划任务的默认任务),则应该获取psexec.exe的副本并运行psexec -s cmd.exe 。 这将为您提供一个交互式的cmd会话作为SYSTEM。 您可以通过从这个新的命令提示符运行whoami来validation。
尝试从这里运行你的应用程序。 您将能够看到可能正在写入控制台的任何输出。 由于这是一个自定义的应用程序,我认为你会很难find一个明确的答案,因为我们不知道你的代码实际上在做什么。 以SYSTEM身份进行交互式会话至less会显示权限问题,或者您在任务计划程序中使用的设置有问题。
事实certificate,问题在于configuration文件存储在AppData \ Local目录中,用于在configuration设置发生变化时运行应用程序的用户(在运行时没有“自动“arg)。 由于我一直logging自己做configuration,而不是分配任务的用户,所以没有任务用户的user.config文件,因此缺less可用的configuration数据。 alignment任务用户和user.config文件的存在修复了它。