导语
微软会经常对 .NET Core 发布更新,通常为安全补丁。这不,今天早上,.NET Core 3.1.5 更新发布了。然而 Azure App Service 自身的 .NET Core runtime 并不会在第一时间更新,每次都要等几周后微软才会推送。对于安全要求较高的应用来说,迫切需要在第一时间完成更新,怎么办呢?
案例
今天我分享一个小技巧,能够让 Azure App Service 在 .NET Core 更新发布的几小时内就用上最新版runtime,而不用干等微软的部署。例子依然是我的博客网站,在更新前,runtime 版本为 3.1.4
而微软刚刚发布了 3.1.5 的安全补丁,修了些 DDOS 漏洞。
尽管我们可以想通过 SCD 方式针对3.1.5重新编译和部署应用,但这样做成本太高了,我们需要一个不996的办法。
插件在手,说走就走
其实,微软每次发布 .NET Core 补丁的时候,都会偷偷向 Azure App Service 的 Extension Marketplace 里也发一份。在 Extensions 里安装的 runtime 会覆盖 App Service 默认自带的 runtime,这样我们就能用上新版 .NET Core 了。
只需要在你的网站菜单里进入 Extensions。如果发现已经存在 .NET Core runtime,则点击进入,选择 Update。如果没有安装过 .NET Core runtime,则点击 Add,可以找到并安装最新版本。
选择对应你网站的runtime,如果不确定,可以把 X86 和 X64 全装了。安装完成后就能在 Extensions 列表里看见最新版本号。
然后一定切记要重启网站,即可用上最新版 .NET Core
说走就走,那么容易?
很可惜,根据多年被坑经验,这样的理想情况很少发生。从 Extensions 中更新或安装 .NET Core runtime 通常会失败。
通常情况是:
- 安装显示成功,但刷新页面后插件列表里并没有显示该版本的.NET Core runtime,或者直接消失了(真·说走就走)
- 安装到一半,暴毙而亡:
遇到这两种情况的话,解决办法也非常简单粗暴,隔2分钟,重试安装,基本上装个4、5次,就能成功。