.NET Core | The Will Will Web

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

使用 .NET CLI 快速建立 Web API 用戶端函式庫的方法

在 Visual Studio 2019 裡面使用含有 OpenAPI 規格的 Web API 已經是十分便利,只要規格寫的好,Web API 用戶端函式庫只要一秒鐘就可以產生。但其實這些好用的功能背後都是靠 MSBuild 與 NSwag 做到,今天花了一整天把所有技術細節釐清,釐清之後對這整套作法是如此的豁然開朗,感覺很棒。這篇文章我就來寫寫今日的研究心得!

... 繼續閱讀 ...

ASP.NET Core 如何紀錄 Entity Framework Core 5.0 自動產生的 SQL 命令

在最近的幾個 Entity Framework Core 版本,對於 Logging (紀錄) 的撰寫方式一直在改變,大致上可區分成 EF Core 2.1, EF Core 3.0+EF Core 5.0 三種版本,這意味著你從網路上找到的資訊,很有可能是舊的,但很多人無法區別其差異,因為舊的寫法到了 EF Core 5.0 依然可以用,只是會被標示棄用而已。你應該也可以想像得到,越新的 EF Core 版本,寫法就會更簡單的,這篇文章我就來說說幾種不同的紀錄方法。

... 繼續閱讀 ...

新手上路 C# 原始碼產生器 (Source Generators)

最近迷上 C# 原始碼產生器 (Source Generators) 這門相當新穎的技術,跟以往常用的 T4 (Text Template Transformation Toolkit) 產生器技術不太一樣,這個 Source Generators 是屬於 Roslyn 編譯器的技術之一,讓你在專案建置的過程中,可以對正在編譯的 C# 原始碼進行增補,動態加入「額外」的原始碼,最後再編譯在一起,非常神奇又實用的技術,讓人非常有想像空間! 👍

... 繼續閱讀 ...

如何使用 .NET CLI 快速產生 ASP․NET Core 的 Controllers 與 Views 程式碼

我們在 Visual Studio 2019 開發 ASP․NET Core 的時候,都可以透過 [加入] / [控制器] 的方式,很便利的快速產生 Controllers 與 Views 程式碼,如果已經有現成的 Models 模型類別存在,還能快速的完成 CRUD 等實作。可惜在 Visual Studio Code 裡面,似乎就沒有相對應的工具可用,這對使用 macOS 或 Linux 的開發者來說,就顯得有點不太方便。不過,微軟官方其實有提供一套 dotnet-aspnet-codegenerator .NET CLI 全域工具,所做的事情跟 Visual Studio 2019 在做的事情完全一樣,本篇文章就來說說這套工具的用法,以及常見的地雷與注意事項。

... 繼續閱讀 ...

如何讓 cURL 可以連接自簽憑證提供的 TLS/SSL 加密連線網站

當我在 Linux 環境下開發或測試 ASP.NET Core 應用程式時,經常會需要用 curl 命令快速測試或取得網站內容,這時如果你連上 https:// 加密連線網址,就會立刻遇到 curl: (60) SSL certificate problem: unable to get local issuer certificate 的問題,關於這個問題我打算用這篇文章徹底搞定它。

... 繼續閱讀 ...

如何在 EF Core 3.1 的模型驗證方法中注入 ServiceCollection 中的服務

由於 .NET Core 大量的使用 DI 技術,所有註冊到 DI 容器(ServiceCollection)的服務,幾乎都可以用「注入」的方式取得物件。只不過有些類別不容易用建構式注入的方式取得服務,這篇文章將分享如何在 EF Core 3.1 的模型驗證方法中注入 ServiceCollection 裡的任何服務。

... 繼續閱讀 ...

如何在 EF Core 3.1 的 Code First 進行資料庫移轉時指定資料庫定序

最近在我的台灣 .NET 技術愛好者俱樂部臉書社團有人問到如何在 EF Core 3.1 的 Code First 進行資料庫移轉時指定資料庫定序 (Database Collation)。我自己也嘗試了一下搜尋,網路上確實都找不到相關資料,但我覺得「理論上」應該很容易辦到,因此自己實驗了一下,也研究出方法,這篇文章將分享我的實際作法。

... 繼續閱讀 ...

當 .NET Core 執行在 Linux 或 Docker 容器中如何優雅的結束

當我們將 .NET Core 跑在 Linux 或 Docker 容器中,我們不但希望程式可以穩定的執行,當程式需要結束的時候,更應該考慮如何「優雅的結束」(Graceful Shutdown)。這部分資訊很難在 docs.microsoft.com 或 GitHub 原始碼專案中找到,本篇文章將分享 .NET Core 如何捕捉作業系統送出的 TERM 訊號,在關閉程式前可以妥善處理程式結束前該做的準備。

... 繼續閱讀 ...

如何實作沒有 ASP.NET Core Identity 的 Cookie-based 身分驗證機制

在 .NET Framework 中,身分認證機制可以使用「表單驗證」(Forms Authentication) 來實作,這種以 Cookie 為基礎的身分驗證方式,相當容易上手,只要學習幾個 API 就可以快速完成實作。本篇文章我將解說如何在 ASP․NET Core 中實作出類似「表單驗證」的身分驗證機制,雖然架構相似,但名稱已改,建議各位日後就稱他為「以 Cookie 為基礎的身分驗證方式」,英文是「 Cookie-based Authentication 」!

... 繼續閱讀 ...