WebJob运行失败,原因是:System.Threading.ThreadAbortException:线程正在中止

Bru*_*Dev 10 azure azure-webjobs

我有一个Azure WebJob在使用以下日志输出运行20分钟后失败:

[02/27/2015 00:30:11 > 3e9b72: SYS INFO] Status changed to Initializing
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Run script 'Namespace.Class.DataProcessor.exe' with script host - 'WindowsScriptHost'
[02/27/2015 00:30:21 > 3e9b72: SYS INFO] Status changed to Running
[02/27/2015 00:30:23 > 3e9b72: INFO] Found the following functions:
[02/27/2015 00:30:23 > 3e9b72: INFO] Namespace.Class.DataProcessor.Functions.ManualTrigger
[02/27/2015 00:30:23 > 3e9b72: INFO] Executing: 'Functions.ManualTrigger' because This was function was programmatically called via the host APIs.
[02/27/2015 00:51:35 > 3e9b72: ERR ] Thread was being aborted.
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] WebJob process was aborted
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Stopped
[02/27/2015 00:51:35 > 3e9b72: SYS INFO] Status changed to Failed
[02/27/2015 00:51:35 > 3e9b72: SYS ERR ] WebJob run failed due to: System.Threading.ThreadAbortException: Thread was being aborted.
   at Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase job, IJobLogger logger, String runId)
   at Kudu.Core.Jobs.TriggeredJobRunner.<>c__DisplayClass2.<StartJobRun>b__0(Object _)
Run Code Online (Sandbox Code Playgroud)

按计划在系统安静的情况下每天开始一次,在20分钟后,它会因错误而失败.仅当调度程序自动触发作业时才会发生此错误.如果从站点下的Azure WebJob面板手动触发,即使它运行了很多小时也没有错误.

作业应用程序输出'.' 每一步都让Azure不再认为它是空闲的.我还在作业运行的网站上配置了以下设置,以防止它在需要一段时间响应或输出日志时超时:

WEBJOBS_IDLE_TIMEOUT = 14400 SCM_COMMAND_IDLE_TIMEOUT = 14400

作业操作是一个POST请求来触发作业,我怀疑它是与手动启动作业相同的机制(并且没有超时).

如何防止这种情况在20分钟后失败?我需要更改/添加哪些设置才能让作业运行超过20分钟?

Pau*_*yer -1

确保将您的网站配置为在启用“始终在线”设置的情况下运行。这需要一个标准级别的网站(免费网站不提供)。从文档中:

永远在线。默认情况下,如果 Web 应用程序闲置一段时间,则会卸载它们。这可以让系统节省资源。在基本或标准模式下,您可以启用始终开启以保持应用程序始终加载。如果您的应用程序运行连续的 Web 作业,您应该启用 Always On,否则 Web 作业可能无法可靠运行。