The Will Will Web

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

簡介 ASP.NET Core 資料保護 (Data Protection)

ASP.NET Core Data Protection 提供了一組加密 API (cryptographic API) 來保護資料安全,其中還自動包含了密鑰管理(key management)與密鑰更換(key rotation)等機制。這套技術主要用來長期取代 .NET Framework 的 ASP.NET 1.x ~ 4.x 中 web.config 定義的 <machineKey> 元素,我研究之後發現這套機制不但簡單好上手,背後的金鑰管理也有一定程度的複雜度,可算是相當不錯的資料保護解決方案。這篇文章我想帶大家快速上手 ASP.NET Core 資料保護機制,並透過一個簡單範例說明他的加解密的用法。

... 繼續閱讀 ...

如何透過 dotnet publish 調整 ASP․NET Core 部署到 IIS 的 Web.config 內容

其實我們在透過 dotnet publish 發行 ASP․NET Core 網站時,預設都會自動發佈一個 web.config 檔案,但是事實上這個檔案跟 Kestrel 完全沒關係,這個檔案主要是給 IIS 看的,當你想部署 ASP․NET Core 到 IIS 的時候,就一定需要這個檔案。今天這篇文章我就來說說,如何在執行 dotnet publish 命令的時候,自動調整 ASP․NET Core 部署到 IIS 的 web.config 內容。

... 繼續閱讀 ...

深入理解 ASP.NET MVC 與 ASP.NET Core MVC 擴充驗證屬性的改變

我在 2013 年的 ASP.NET MVC 開發心得分享 (24):擴充部分類別的建構子 文章中,是我第一次介紹 .NET Framework 年代的 ASP.NET MVC 如何替「實體資料模型」(Entity Data Model) 在有使用 EDMX 自動產生程式碼的情況下如何還能擴充現有的「實體模型類別」(Entity Model Class) 的「驗證屬性」(Validation Attributes)。但直到 ASP.NET Core 的 MVC 開始,作法有點改變了,這篇文章我來記錄一下這些變化的地方。

... 繼續閱讀 ...

認識 ASP.NET Core 7.0 的啟動設定檔 (Launch Profile)

由於 ASP.NET Core 7.0 與 ASP.NET Core 6.0 的專案範本中的啟動設定檔(Launch Profile)有些許不同,而我最近的 ASP.NET Core 課程剛好有學員提到這個問題,所以我就來整理一下相關知識,幫助大家更好的認識這個 Properties\launchSettings.json 檔案。

... 繼續閱讀 ...

設定 .NET 的 HttpClient 使用 HTTP/2 通訊協定發出 HTTP 要求

前幾天把我的部落格網站啟用 HTTP/2 通訊協定版本,結果意外發現我有個用 WebClient 抓取網頁的程式壞掉了。其實我一開始並沒有發現是 HTTP/2 造成的問題,鬼打牆了一段時間才意識到可能是 HTTP 版本差異造成的問題。這篇文章我就來分享幾種不同的 HttpClient 程式寫法,讓你用 HTTP/2 通訊協定版本抓回遠端 Web 伺服器上的網頁。

... 繼續閱讀 ...

ASP.NET Core 網站如何整合 Google 的 reCAPTCHA Enterprise 功能

我們公司多奇數位創意的官網去年底全新改版上線,網站上幾乎每頁都有聯絡多奇表單,並透過 AJAX 傳送到後端 API 負責記錄並送出郵件到我們公司的服務信箱,但網站上線一個月以來,已經收到超過 100 條垃圾訊息。因此,我打算將表單加入 Google Cloud Platform (GCP) 的 reCAPTCHA Enterprise 服務,減少收到垃圾訊息的機會,不過我發現 GCP 的文件幾乎找不到任何一份完整的 C# 範例程式,連 ChatGPT 都問不出正確結果。這篇文章我來分享一下完整的開發流程!

... 繼續閱讀 ...