问题描述
如果在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的加载路径!
效果图对比
- **is_in_place **参数值默认为false的情况下,webjob的源文件在 C:\home\site\wwwroot\App_Data\jobs\continuous\myconsoleapp\publish\MyConsoleApp1.dll, 而运行目录为:D:\DWASFiles\Sites#1xxxxxxx
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
参考资料
WebJobs 支持设置的参数:https://docs.azure.cn/zh-cn/app-service/webjobs-dotnet-deploy-vs#settingsjob-reference
正在加载评论...