遭遇奇怪的問題:所有 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 生成鏡像,問題就解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章