The Will Will Web

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

ASP.NET 部署到 Azure App Service 如何使用 Log stream 查看應用程式紀錄

當 Web 應用程式上傳到 Azure App Service 之後,開發人員第一個要面對的問題,就是要怎樣偵錯(Debug)?在本機開發應用程式通常開發工具都會幫我們整理好各種資訊,但是上到雲端環境後,很多人就會顯得手忙腳亂,有時候說是「瞎子摸象」也不為過,非常痛苦。這篇文章我打算帶大家入門,教大家怎樣用免費又簡單的方式使用 Log stream (記錄資料流) 查看應用程式執行紀錄!

... 繼續閱讀 ...

如何在舊版的 .NET Core 專案使用不支援當前目標框架的 NuGet 套件

我們最近有個維護案,其技術架構是採用已經 EOS (產品結束支援) 的 .NET Core 2.1 版本,由於客戶沒有預算可以升級框架版本,所以只能持續在現有的不受支援的 .NET Core 版本上新增功能。因為本次專案需求正好要用到一個支援 .NET Standard 2.0 的 MeiliSearch 套件,理論上應該支援 .NET Core 2.1 的,但卻遇到了無法編譯的狀況。本篇文章我就來說說這種狀況的解決方法。

... 繼續閱讀 ...

EF Core 已經不會在 SaveChanges() 的時候對實體模型進行額外驗證

以前在使用 EF6 的時候,我就一直覺得有個困擾,那就是我們在 ASP.NET MVC 執行 Model Binding 的時候,除了 MVC 會幫你做輸入驗證模型驗證之外,當你在執行 db.SaveChanges(); 的時候,預設 Entity Framework 還會再讀取一次實體類別(Entity Class)上面定義的 DataAnnotations 定義,例如 [Required][StringLength] 這種,但這真的有點多此一舉。想不到從 EF Core 1.0 開始,這個特性就被移除了,但我 EF Core 6.0 才發現這件事,可見實務上真的很少用到! 😅

... 繼續閱讀 ...

如何在專案中透過 .NET CLI 管理專案的本地工具 (.NET Local Tool)

我們在使用 .NET CLI 開發專案的時候,經常會需要安裝一些 .NET 全域工具 (.NET Global Tool),但是安裝全域工具有個小缺點,那就是這些工具會需要被註冊到 PATH 環境變數中,而且經常會有與 .NET SDK 版本不一致的問題。我在授課的時候,學員就遇過好幾次 dotnet-ef 套件跟 .NET SDK 版本不一致,導致出現靈異事件的狀況。今天這篇文章,我就來跟大家說一下如何將這些 .NET 全域工具 改裝成 .NET 本地工具

... 繼續閱讀 ...

如何在現有 ASP.NET Core 網站加入 Azure AD 的 OpenId Connect 登入

我們公司採用 Microsoft 365 辦公協作環境,這也意味著背後一定使用了 Azure AD 目錄服務,因此我們可以直接拿 Azure AD 作為公司的 OAuth 2.0 + OpenId Connect (OIDC) 認證與授權平台,因此開發公司內部應用程式就變的非常容易。這篇文章我將說明要將一個 ASP.NET Core 網站加入 Azure AD 的身份驗證流程,以及使用時的注意事項。

... 繼續閱讀 ...

如何在 ASP.NET Core 漂亮的建立 Query String 查詢字串

我們在建立含有 Query String 網址時,若是用字串串接的方式來實作,程式碼會相對的比較醜一點。從 ASP.NET Core 1.0 開始,就有好幾個專門用來建立 Query String 的類別,這些類別不但可以提升程式碼的可讀性,所有的 Query String 也都會進行必要的 URL Encode 動作,讓你的網址更符合國際標準,建議可以多加利用。

... 繼續閱讀 ...

在不同的作業系統下如何設定包含小數點的環境變數名稱

一般來說,我們極少會在環境變數上使用小數點( . )當成環境變數名稱來使用,但是在特定應用程式的條件下,可能被迫需要做出這樣的設定。像透過環境變數設定 .NET 應用程式的 LogLevel 就很可能會用到小數點來進行設定,本篇文章我將說明不同作業系統下的設定方式與潛在問題。

... 繼續閱讀 ...

如何在 .NET 透過 nuget.config 自訂 NuGet 套件來源

有時候我們會希望從本機硬碟安裝 NuGet 套件,有時候則是想要安裝公司內部發行的 NuGet 套件,我發現許多人都會透過 Visual Studio 去調整全域的 nuget.config 設定檔,但這樣很容易造成你在開啟其他不同專案的時候會無法成功還原套件的情況。另一方面,我們在 CI 的環境中,若需要指定自訂的 NuGet 套件來源,通常也都是透過建立 nuget.config 的方式來指定。這篇文章我將來說明如何在方案或專案中建立 nuget.config 檔案,並將該檔案加入到版控之中。

... 繼續閱讀 ...

如何在 LINQPad 7 安裝 LINQPad.QueryPlanVisualizer 外掛 (Plugin)

我最近在研究如何讓 LINQPad 7 可以在每個查詢都使用 LINQPad.QueryPlanVisualizer 外掛來顯示 LINQ 實際執行的成效,顯示 SSMS 常見的執行計畫 (Query Execution Plan)。我發現在特定查詢安裝 NuGet 套件是可以使用的,但是依據官網的指示安裝成 Plugin 的話,就沒辦法正確使用,去 GitHub 提問也得不到什麼有效的答案,經過了好幾天的嘗試,我終於找出正確的設定方法,特別寫文章註記一下。

... 繼續閱讀 ...