问题:
之前一直用vs code 的 Azure Function extension 工具部署,没有什么问题。直到3月份发现 vs code显示部署成功,但是通过 https://<function_name>.scm.azurewebsites.net/DebugConsole 查看上传后的 dll 文件,dll文件根本没有被更新,依旧是有问题的版本。
解决方案:
由于我们使用的是 zip 包部署 Azure Function 的方式,上传后的 zip 文件通过 SCM 页面的 debug console 工具可以查看文件,进行简单的 cmd 操作。Zip 文件的路径应该是
C:\home\data\SitePackages, 但是微软 Azure的官方文件一直说是D 盘,不确定是什么原因。页面文件的存放路径应该是
C:\home\site\wwwroot\bin, 应该是我们上传 zip 文件之后,zip文件会解压到
C:\home\site\wwwroot\bin(参照link:Run your functions from a package file in Azure | Microsoft Learn)
给MS Azure 官方发送 support 要求之后,一直没有反馈。所以在用户下班之后决定自己动手解决。通过上面两图可以看到,bin下dll 的日期和zip 包的日期明显不符。
1、首先下载 C:\home\data\SitePackages 下最新的 zip 包到本地备份。经查看此 zip包确实 dll 文件不是最新。
2、首先删除了 C:\home\data\SitePackages 下的所有 zip 文件,然后测试访问 AzureFuntion 的对应功能,发现页面直接报错。
3、查看C:\home\site\wwwroot\bin 下,发现所有的代码相关文件都已经消失,可以确定 Azure Function 确实是以zip 包的形式运行。
4、在本地重新编译 dll ,把最新的 dll 保存到 zip 包中。
5、 通过执行下面的 Azure Cli 命令,手动上传文件。
azfunctionapp deployment source config-zip -g RG-CP-QA-JP -n CP-QA-JP --srcD:\workspace\SEC_INTRA_SVN_LOCAL\20230307122819.zip
6、上传之后,手动修改 C:\home\data\SitePackages\packagename.txt ,此文件只需要输入 zip 包的文件名即可。
7、重新查看 C:\home\site\wwwroot\bin 下的相关 dll 文件,发现文件日期和大小都和本地zip 包的文件一直。测试功能之后,发现最新开发的功能已经成功部署到 Azure Function。