由於從 .NET Core 1.0 開始,就沒有自動載入 BIG5
編碼的 Encoding
資料,所以你沒辦法直接透過 Encoding.GetEncoding("Big5")
取得 Encoding
物件。在 .NET Core 3.1 之前,還需要須額外安裝 System.Text.Encoding.CodePages
套件才行。不過,從 .NET 5 開始,這個套件成為了 .NET SDK 的一部分,不再需要額外安裝。但即便如此,你還是要特別執行一段註冊以使用此編碼。接下來,我們將深入探討如何註冊這些編碼並正確使用它們在不同的場景中。
... 繼續閱讀 ...
微軟從 ASP.NET Core 9 開始正式支援 OpenAPI 規格,並推出 Microsoft.AspNetCore.OpenApi NuGet 套件,在建立 ASP.NET Core Web API 專案時,預設就會加入可以產生 OpenAI 規格的端點。不過,對許多開發人員來說,常用的 Swagger UI 介面卻不見了。今天這篇文章我就來說說怎樣把 Swagger UI 加回專案中。
... 繼續閱讀 ...
前幾天我們公司有個網站準備上一個新版,工程師發出 PR (Pull request) 之後請我進行程式碼審核(Code Review),結果我發現他本次的修正項目不太合理,他改了一個前端套件的資料夾名稱。我當下覺得不妙,一個已經測試數月,也準備上線的網站,怎麼還會在最後一刻修改資料夾名稱呢?我反問工程師為什麼要改這些地方時,卻得到一個我不是很滿意的回答,因此退件請他重改。這不是一個什麼嚴重的技術問題,改改資料夾名稱就正常了,但是卻又激起我追根究底的柯南精神,真相只有一個,我要找出來!🕵️♂️
... 繼續閱讀 ...
C# 8.0 引入了一個 Async Streams (非同步串流) 的語言特性,這個特性讓我們可以做到許多以前做不到的事,若用在 ASP.NET Core Web API 上面,你就可以很輕鬆的實現 API 資料串流功能,讓你可以透過「非同步」的方式有效率的處理大量資料。由於這個概念太過前衛,所以我們先從基本的語法開始,然後再來看看如何應用在 ASP.NET Core Web API 上面。
... 繼續閱讀 ...
其實我大部分時間都在 Visual Studio Code 裡面做開發,久而久之就生疏了 Visual Studio 2022 裡面的各種選項設定,有很多都是近幾年才有的新功能,而有些「預設值」確實不太好用,只要沒特別去研究,就不知道原來只要微調一下就會變的非常方便。這篇文章我就來整理一下 Visual Studio 2022 在開發 ASP.NET Core 時相關的那些重要設定。
... 繼續閱讀 ...
當我在研究 ASP.NET Core 的 Response compression (回應壓縮) middleware 時,發現了 ASP.NET Core 內建支援各種 MIME Types 的相關支援,這篇文章我大致整理一下幾個常見的用法。
... 繼續閱讀 ...
這應該算是 .NET Core 的歷史包袱吧,任何軟體都一樣,沒有人可以預料未來的需求,所以當初設計的時候,多多少少一定會遇到一些不合理的地方。然而,因為當年 .NET Core 算是有承諾「絕對不會」有破壞性的 API 變更,所以一些早期設計不當的 API 全部都留下來了,也因為這樣,.NET 就需要設計一些新的 API 來取代「包裹」舊的 API,雖然會帶來一些困擾,但是只對老人困擾而已,對新人來說,這些都是「新」的 API,所以不會有任何問題。這篇文章我要來介紹 .NET 7 / 8 通常該如何初始化應用程式,以及跟舊版有什麼不一樣的地方。
... 繼續閱讀 ...
我們在建置 .NET 專案時,有許多可自訂的建置操作是由 MSBuild 的屬性(Properties)所控制的。重要的是要知道如何以及在哪裡設定屬性值,以達到期望的效果。一般來說,你可以在執行 msbuild.exe
命令列工具的時候指定屬性值,也可以在專案檔(*.csproj
)中加入屬性設定,也可以在專案目錄中加入 Directory.Build.props
屬性定義檔。今天這篇文章,我就打算來介紹這個 Directory.Build.props
檔案的用法,以簡化我們方案中各專案的設定。
... 繼續閱讀 ...
我有個客戶的網站最近剛上線,在設定 CSP (Content Security Policy) 標頭的時候,因為我設定了 unsafe-inline
的關係,所以導致 Google Analytics (GA) 的程式無法執行,但 GA 網站提供的程式碼就是用 Inline Script (內嵌腳本) 怎麼辦呢?這篇文章我就來告訴你解決方案。
... 繼續閱讀 ...