我对将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...
从这里消失了。
那么-为什么我的网络作业要从这里开始呢?为什么我的一些部署文件丢失了?
1条答案
按热度按时间rsaldnfx1#
为什么我的网络作业要从这里开始?
webjob被复制到下面的临时目录中
%TEMP%\jobs\{job type}\{job name}\{random name}
从那里逃跑。此选项可防止锁定原始webjob二进制文件,这可能会导致重新部署webjob时出现问题。webjob直接从webjob二进制文件目录运行。我们称之为适当的选择。此选项可能存在锁定问题,仅当没有锁定文件的风险时才应使用。
默认情况下使用第一个选项(in-place=false)。您可以在settings.job中显式配置此设置。例如
为什么我的一些部署文件丢失了?
我也测试并再现了这种情况。但我没有找到解决这个问题的办法。我建议你可以
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等等。更多细节,请阅读本文。