The Will Will Web

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

ASP.NET Core MVC 的 Razor 語法對於 @ 符號的編碼陷阱

前幾天我們公司有個網站準備上一個新版,工程師發出 PR (Pull request) 之後請我進行程式碼審核(Code Review),結果我發現他本次的修正項目不太合理,他改了一個前端套件的資料夾名稱。我當下覺得不妙,一個已經測試數月,也準備上線的網站,怎麼還會在最後一刻修改資料夾名稱呢?我反問工程師為什麼要改這些地方時,卻得到一個我不是很滿意的回答,因此退件請他重改。這不是一個什麼嚴重的技術問題,改改資料夾名稱就正常了,但是卻又激起我追根究底的柯南精神,真相只有一個,我要找出來!🕵️‍♂️

... 繼續閱讀 ...

使用 C# 8.0 Async Streams 實現非同步串流 ASP.NET Core Web API

C# 8.0 引入了一個 Async Streams (非同步串流) 的語言特性,這個特性讓我們可以做到許多以前做不到的事,若用在 ASP.NET Core Web API 上面,你就可以很輕鬆的實現 API 資料串流功能,讓你可以透過「非同步」的方式有效率的處理大量資料。由於這個概念太過前衛,所以我們先從基本的語法開始,然後再來看看如何應用在 ASP.NET Core Web API 上面。

... 繼續閱讀 ...

在 Visual Studio 2022 開發 ASP.NET Core 這樣設定就對了!

其實我大部分時間都在 Visual Studio Code 裡面做開發,久而久之就生疏了 Visual Studio 2022 裡面的各種選項設定,有很多都是近幾年才有的新功能,而有些「預設值」確實不太好用,只要沒特別去研究,就不知道原來只要微調一下就會變的非常方便。這篇文章我就來整理一下 Visual Studio 2022 在開發 ASP.NET Core 時相關的那些重要設定。

... 繼續閱讀 ...

認識 ASP.NET Core 內建的各種 Mime Types 用法

當我在研究 ASP.NET Core 的 Response compression (回應壓縮) middleware 時,發現了 ASP.NET Core 內建支援各種 MIME Types 的相關支援,這篇文章我大致整理一下幾個常見的用法。

... 繼續閱讀 ...

從 .NET 7 開始就不鼓勵使用 .NET Generic Host 建立應用程式

這應該算是 .NET Core 的歷史包袱吧,任何軟體都一樣,沒有人可以預料未來的需求,所以當初設計的時候,多多少少一定會遇到一些不合理的地方。然而,因為當年 .NET Core 算是有承諾「絕對不會」有破壞性的 API 變更,所以一些早期設計不當的 API 全部都留下來了,也因為這樣,.NET 就需要設計一些新的 API 來取代「包裹」舊的 API,雖然會帶來一些困擾,但是只對老人困擾而已,對新人來說,這些都是「新」的 API,所以不會有任何問題。這篇文章我要來介紹 .NET 7 / 8 通常該如何初始化應用程式,以及跟舊版有什麼不一樣的地方。

... 繼續閱讀 ...

使用 Directory.Build.props 自訂方案中所有專案共用的 MSBuild 屬性值

我們在建置 .NET 專案時,有許多可自訂的建置操作是由 MSBuild 的屬性(Properties)所控制的。重要的是要知道如何以及在哪裡設定屬性值,以達到期望的效果。一般來說,你可以在執行 msbuild.exe 命令列工具的時候指定屬性值,也可以在專案檔(*.csproj)中加入屬性設定,也可以在專案目錄中加入 Directory.Build.props 屬性定義檔。今天這篇文章,我就打算來介紹這個 Directory.Build.props 檔案的用法,以簡化我們方案中各專案的設定。

... 繼續閱讀 ...

套用 CSP (Content Security Policy) 的網站要如何安全的使用 Inline script

我有個客戶的網站最近剛上線,在設定 CSP (Content Security Policy) 標頭的時候,因為我設定了 unsafe-inline 的關係,所以導致 Google Analytics (GA) 的程式無法執行,但 GA 網站提供的程式碼就是用 Inline Script (內嵌腳本) 怎麼辦呢?這篇文章我就來告訴你解決方案。

... 繼續閱讀 ...

如何在 VS Code 順利啟用測試總管 (Test Explorer) 測試 .NET 應用程式

我最近在嘗試使用 GitHub Copilot 來撰寫單元測試,而在使用的過程中,我發現 Visual Studio Code 的測試總管 (Test Explorer) 竟然抓不到我專案中的測試案例,研究了一下才發現是 .NET Core Test Explorer 沒有正確設定導致的。不過,其實 C# Dev Kit 擴充套件本來就內建了 C# 的測試轉接器 (Test Adapter),不需要 .NET Core Test Explorer 就能跑,索性我就把套件刪除了。今天這篇文章我就來分享如何設定讓 C# Dev Kit 能夠正確的啟用測試總管 (Test Explorer),方便我們執行單元測試。

... 繼續閱讀 ...

如何設定 ASP.NET Core 在發行到 IIS 時移除 X-Powered-By 標頭

最近我們公司有一個新的網站即將上線,在做資安檢核的時候發現網站有回應一個 X-Powered-By 標頭,一般來說我們都會透過修改 Web.config 的方式移除這個標頭,但我希望這個動作可以在 CI/CD 的時候自動完成,而不是每次都手動調整 Web.config 設定檔。我之前在 如何透過 dotnet publish 調整 ASP․NET Core 部署到 IIS 的 Web.config 內容 文章中已經介紹了許多 ASP.NET Core 發行到 IIS 的設定技巧,今天我想來做出一點補充,讓我們可以在透過 dotnet publish 發行網站時調整 Web.config 的任意設定內容。

... 繼續閱讀 ...