[C#][Visual Studio] .NET MVC專案,If-None-Match一直為空解決方法

最近在研究HTTP CACHE的機制,在練習使用.NET MVC專案寫一個路由回傳圖檔,其中必須透過ETagIf-None-Match的方式完成瀏覽器的快取,最後的預期結果如下。

第一次請求因為ETag比對不到所以下載原檔4.7M,後面因為有比對到一致所以cache住了回傳304狀態,大小降至46B,至於時間請忽略(因為我這個環境網速太快 XD)

If-None-Match 空值

但這都不是重點,詳細關於ETag快取的方式以後會再另外筆記,總之上面是完成的結果,下面是過程中不斷嘗試不出來的問題,一直都是200 OK,也就是沒有任何cache。

但是,F12卻還是能夠看到Request Headers的If-None-Match是有值的,但我在偵錯的時候,request的這個值卻一直是空的。

一直以為是哪裡設定有錯,還是怎麼樣的,但是這個request的其他標頭又有值。

停用 CSS 熱重新載入

後來發現在Visualt Studio工具→選項→專案和方案→ASP.NET Core設定中,如果”CSS 熱重新載入“是已啟用,那If-None-Match就會被刪除,所以要把它停用…

停用之後如下,一切就正常了。

偵錯有值了,也可以順利回傳304 Not Modified了,一切都是Visual Studio偵錯搞的鬼…這要是沒查到,不曉得要瞎猜多久

參考資料:If-None-Match header always null in asp.net core controller

Scroll to Top