Azure webjobs部署和工作目录

时间:2018-01-16 16:17:46

标签: azure deployment azure-webjobs kudu

我对部署webjobs到azure感到困惑。

我正在使用.net核心,所以我在我的deploy.cmd文件中手动发布我的webjobs,例如:

call :ExecuteCmd dotnet publish "%DEPLOYMENT_SOURCE%\My.WebJobs\Mt.WebJobs.csproj" --output "%DEPLOYMENT_TEMP%\App_Data\Jobs\Continuous\MyWebJobs" --configuration Release

然后将webjob部署到deployment_temp文件夹。在那之后,KuduSync启动并同步到DEPLOYMENT_TARGET d:\home\site\wwwroot我可以在那里看到,如果我看,有一个App_Data\Jobs\Continuous\MyWebJobs文件夹,并且我的所有文件都已正确部署并同步到该文件夹​​。

然而,当我运行webjob时,它会报告它从一个完全不同的位置(D:\local\Temp\jobs\continuous\MyCustomerIO\bp003r3f.h2g)运行。当我查看该文件夹时,我会看到大部分已部署的webjob文件,但此处缺少App_Data...中的一些JSON配置文件。

那么 - 为什么我的webjob从这里开始运行?为什么我的部署文件丢失了?

1 个答案:

答案 0 :(得分:4)

  

为什么我的webjob从这里开始运行?

将WebJob复制到%TEMP%\jobs\{job type}\{job name}\{random name}下的临时目录,并从那里运行。此选项可防止原始WebJob二进制文件被锁定,这可能会导致重新部署WebJob时出现问题。

WebJob直接从WebJob二进制文件目录运行。我们称这个选项到位。此选项可能存在锁定问题,只应在没有锁定文件的风险时使用。

默认情况下使用第一个选项(就位= false )。您可以在settings.job中明确配置此设置。 e.g。

{ "is_in_place": true/false }
  

为什么我的部署文件丢失了?

我测试并复制了这种情况。但我找不到解决方案来解决这个问题。我建议您可以使用Environment.GetEnvironmentVariable("WEBJOBS_ROOT_PATH");来获取根路径  webjob的指导。

WEBJOBS_ROOT_PATH 这是webjob文件的位置,您可以指定绝对路径,否则该值将与默认根路径组合:

D:/home/site/wwwroot/ + WEBJOBS_ROOT_PATH(relative)获取webjob_name,webjob_run_id等。

有关详细信息,请参阅此article