2020-07-06 13:18

C# MVC Cassette 隔離區快取找不到的錯誤

有使用 Cassette 的專案,在發布站台之後網頁開起來卻發生了 JS 跟 CSS 全部掉光,查看錯誤訊息時發現 Cassette 抓不到在隔離區的快取。

原因是當 JS 跟 CSS 有更新時,Cassette 會重新產生快取的 key,卻沒有產生隔離區的快取檔案,造成抓不到快取的問題,IIS pool 重啟也無效,Cassette 的管理畫面也進不去。

解決辦法就是呼叫 Bundles.RebuildCache(),最好方式就是在 Global.asax.cs 增加自動處裡。

protected void Application_Error(object sender, EventArgs e)
{
    /* 重建 Cassette 綑綁 */
    var ex = Server.GetLastError() as System.IO.FileNotFoundException;
    if (ex != null && ex.StackTrace.Contains("Cassette."))
    { Bundles.RebuildCache(); }
}

0 回應: