azure webjobs部署和工作目录

eulz3vhy  于 2021-06-20  发布在  Kudu
关注(0)|答案(1)|浏览(488)

我对将webjobs部署到azure感到困惑。
我使用的是.NETCore,所以我在我的网站上发布我的webjobs deploy.cmd 文件,例如: 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文件,但是一些json配置文件 App_Data... 从这里消失了。
那么-为什么我的网络作业要从这里开始呢?为什么我的一些部署文件丢失了?

rsaldnfx

rsaldnfx1#

为什么我的网络作业要从这里开始?
webjob被复制到下面的临时目录中 %TEMP%\jobs\{job type}\{job name}\{random name} 从那里逃跑。此选项可防止锁定原始webjob二进制文件,这可能会导致重新部署webjob时出现问题。
webjob直接从webjob二进制文件目录运行。我们称之为适当的选择。此选项可能存在锁定问题,仅当没有锁定文件的风险时才应使用。
默认情况下使用第一个选项(in-place=false)。您可以在settings.job中显式配置此设置。例如

{ "is_in_place": true/false }

为什么我的一些部署文件丢失了?
我也测试并再现了这种情况。但我没有找到解决这个问题的办法。我建议你可以 Environment.GetEnvironmentVariable("WEBJOBS_ROOT_PATH"); 获取webjob的根路径direcroty。
webjobs\u root\u path是webjob文件的位置,您可以指定绝对路径,否则该值将与默认根路径组合: D:/home/site/wwwroot/ + WEBJOBS_ROOT_PATH(relative) 获取webjob\u name、webjob\u run\u id等等。
更多细节,请阅读本文。

相关问题