2024/10/24

[ASP.NET MVC] 解決在 WebAPI 讀取不到 Session 值的問題

markdown ### 環境 - ASP.NET MVC 5 - .NET Framework 4.7.2+ ### 問題 原本有個設定值以 Cookie 為存取來源, 但因應安全理由改寫成 Session 來存取, 卻在 WebAPI 存取時發生讀取不到 Session 的內容。 在 ASP.NET Core MVC 反而簡單, 只要 `services.AddSession()` 跟 `app.UseSession()` 即搞定。 目前還是有許多不是 .NET Core 的專案,記錄一下以供未來翻查用。 ### 解決方法 修改 `Global.asax.cs` 檔案 ```cs protected void Application_PostAuthorizeRequest() { // WebApi SessionState bool isWebApiRequest = HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.StartsWith("~/api"); if (isWebApiRequest) HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required); } ``` ### 參考資料 - [Accessing Session Using ASP.NET Web API](https://stackoverflow.com/questions/9594229/accessing-session-using-asp-net-web-api)

2024/06/18

[C#][WebAPI] Json.NET / System.Text.Json 序列化物件中忽略 null 值的屬性

markdown 近期遊走在 ASP.NET MVC 5 / Web API 2 以及 ASP.NET Core MVC (.NET) 的專案中 對於由 API 讀取進來的物件在 .NET Framework 與 .NET 下處理的方式不同, 需要記錄一下以便日後翻查

場景需求

使用場景是把接收進來的物件內容轉換做一個清洗,只要從 Web API 接進來的物件屬性值為 null 的都不保留 例如: 有一個 Log 物件如下 ```C# var log = new Log { Timestamp = "2024-06-16T09:22:01.5120098Z", Level = "Information", Message = "This is test message", Exception = null }; ``` 那麼經過清洗過後的字串內容就不會包含 Exception 空值的屬性 ```Json { "Timestamp":"2024-06-16T09:22:01.5120098Z", "Level":"Information", "Message":"This is test message" } ``` 以下即是在 ASP.NET MVC 5 及 ASP.NET Core 不同環境的處理方式

2024/03/31

[.NET] 如何在 ASP.NET Core 的專案整合 Vite 開發

markdown ### 前言 之前大多使用 Laravel 搭配 Vite 來做前端資源整合開發,由於 Laravel 生態系非常完整,也不太需要多做太多設定即可整合完成。 近期在 ASP.NET Core MVC 的專案使用 Vite 開發前端資源檔案,使用上卻不是那麼上手。尤其是在開發時期載入檔案的部分,在 Laravel 用 @vite 卻可輕易完成,便尋尋覓覓找到相近的整合套件。

2024/03/16

[Vite] 前端開發模擬 API 的好物 Mock Service Worker (MSW)

markdown ### 前言 網站開發階段,常常會遇到前端開發時需要模擬呼叫 API 的情境。 用 json-server 來起一個服務是方便測試,但是跟網站是分開的 server,可能會因為忘記把服務開啟而呼叫失敗。 在不用後端介入的情境下,前端用 Vite 整合 Mock Service Worker (MSW) 模擬客製回應是個不錯的選擇。

2024/02/10

[Visual Studio 2022] v17.8 新功能 - 字串搜尋取代時保留原始大小寫格式

markdown ### 前言 在過去要搜尋文字取代時,不同的大小寫可能要分批做幾次取代,以保留原始的英文字母大小寫。 在 VS2022 v17.8 的新功能就可以一次辦到囉!多省做幾次取代步驟的時間。 ### 環境 - Visual Studio 2022 v17.8.6 ### 實作 原始的文字內容如下
用快速鍵 Ctrl+H 做取代動作,點選 AB 的按鈕做 Case 保留
第一組: 只取代 demo
第二組: 取代 demohttp
是不是很方便呀?

2024/02/09

[RESTful API] 如何在 Visual Studio 2022 及 VS Code 使用 .http 檔案文件化測試 API 執行結果

markdown ### 前言 通常在測試 API 的工具中,Postman 或 Insomnia 都是很方便的 API 測試圖形介面工具。 只是各工具有各自的保留文件格式,若能把測試 API 的資料文件化並做版控,又能夠減少散落在各處的翻查不易的問題。 因為 Visual Studio 2022 已支援能夠在 IDE 開啟 .http 文件,並直接可做測試看結果,而且功能齊全,文字檔案又能做版控。 但筆者不是只有 .NET 的專案,還有其他程式語言的專案,也會使用 Visual Studio Code 來撰寫,所以若能讓 .http 文件能跨專案跨工具來執行並管理就更棒了。 在本文中分別介紹在 Visual Studio 2022 及 Visual Studio Code 如何使用 .http 來執行測試 RESTful API。

[WSL] 如何在 Windows 11 安裝 WSL

markdown 趁著換新電腦,安裝主機開發環境,記錄一下安裝 WSL 的步驟 (Windows 11 之後的預設 WSL 版本已為 WSL 2) ### 準備 目標的作業系統為 Windows 11 先確認至 控制台 > 程式和功能 > 開啟或關閉 Windows 功能

勾選 "Windows 子系統 Linux 版" 以及 "虛擬機器平台",確定後並重新開機