【Azure WebJob】is_in_place 参数在App Service Web Job中的作用? - LuBu0505/My-Code GitHub Wiki

问题描述

如果在Webjob的配置文件(settings.job) 中添加了 is_in_place , 它有什么作用呢?

问题解答

根据官方文档解释,**is_in_place ** 默认值为 false,如果设置为 true , 表示允许 WebJob不用首先将其复制到临时文件夹,而可以在源文件所在的原始文件夹中运行。

当我们从Azure App Service的Webjob页面上传webjob的源文件后,它在App Service上所保存的路径为:**C:\home\site\wwwroot\App_Data\jobs\ **

基于以上信息,通过修改 settings.job 并添加 is_in_place参数来验证WebJob的结果:

1) 通过kudu站点,直接添加 settings.job 文件,内容如下:

{ "is_in_place": true }

2)  进入Process Explorer页面,点击w3wp.exe (scm) 进程,查看MyConsoleApp1 的 properties 按钮,点击Handles Tab页,就可以查看到dll的加载路径!

效果图对比

1) **is_in_place **参数值默认为false的情况下,webjob的源文件在 C:\home\site\wwwroot\App_Data\jobs\continuous\myconsoleapp\publish\MyConsoleApp1.dll, 而运行目录为:D:\DWASFiles\Sites#1xxxxxxx image.png

2) is_in_place 修改为true后,webjob的源文件在 C:\home\site\wwwroot\App_Data\jobs\continuous\myconsoleapp\publish\MyConsoleApp1.dll, 而运行目录为也是 C:\home\site\wwwroot\App_Data\jobs\continuous\myconsoleapp\publish\MyConsoleApp1.dll image.png

参考资料

WebJobs 支持设置的参数:https://docs.azure.cn/zh-cn/app-service/webjobs-dotnet-deploy-vs#settingsjob-reference

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!