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 的镜像发布过更新。
![](/i/l/?n=23&i=blog/1/202303/1-20230311134234417-76647422.png)
我们使用的 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 生成镜像,问题就解决了。
标签:Core,ASP,环境,7.0,为空,ViewComponent,镜像,NET,SDK From: https://www.cnblogs.com/dudu/p/17205699.html