我对部署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从这里开始运行?为什么我的部署文件丢失了?
答案 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。