遭遇奇怪的问题:所有 ASP.NET Core ViewComponent 都输出为空

3月9日晚上的一次发布中遇到一个非常奇怪的问题,发布前在 staging 环境测试正常,发布到生产环境后发现所有 ViewComponent 都输出为空(没有任何内容)。

生产环境与 staging 环境的不同之处是生产环境生成容器镜像时预编译了 razor 视图文件。

RUN dotnet build /p:RazorCompileOnBuild=true -c Release 

开始以为是最近的代码变更引起的,最近的确修改了 ViewComponent 部分的代码,但后来基于生产环境正在正常运行的代码,在 staging 环境以预编译视图的方式生成镜像,结果问题重现了。

同样的代码3月9日之前 build 的镜像正常(具体是3月8日晚上19:50左右),3月9日晚上(具体是3月9日晚上20:00左右)以及之后 build 的镜像出问题,这期间竟然发生了什么?

在 .NET 的 docker 镜像仓库 找到了一个线索,美国时间3月8日 .NET SDK 的镜像发布过更新。

我们使用的 SDK 镜像是 mcr.microsoft.com/dotnet/sdk:7.0-jammy,美国时间3月8日发布的是 .NET SDK 版本是 7.0.201,而我们之前使用的是 7.0.200,但这个版本的镜像已被删除,只能回退到 7.0.103

后来在 github 上发现了这个 issue: ViewComponents called with the vc taghelper are broken on 7.0.3,果然是 .NET SDK 更新引起的问题。

回退使用 .NET SDK 7.0.103 生成镜像,问题就解决了。

3月15日更新:7.0.202 修复了这个问题。

posted @ 2023-03-11 15:59  dudu  阅读(321)  评论(0编辑  收藏  举报