The Will Will Web

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

ASP.NET 與 ASP․NET Core 偵測用戶端已斷線並自動取消非同步方法執行

我今天在「C# 開發實戰:非同步程式開發技巧」課程中有學員提問,如何偵測用戶端已斷線並自動取消非同步方法執行。事實上 ASP.NET (.NET Framework) 與 ASP.NET Core 的實作方式相當類似,今天這篇文章我就來分享 ASP.NET Core 的實作方式,幫助你有效偵測用戶端已斷線,並自動取消非同步方法執行。

... 繼續閱讀 ...

使用 Json.NET 定義一個混合強型別與弱型別的 JSON 資料回應

我們最近有個專案需求特別複雜,由於是個已經持續維護 10 年的系統要改版,很多商業邏輯已經不可考,只能從程式碼中找尋蛛絲馬跡。不過,有些資料的欄位來自於程式碼,但更多來自於一組極其複雜的動態資料表設計。我們除了從現有的頁面上進行新系統設計外,有時候還會意外的多出幾個莫名的欄位,因此對於資料模型類別的規劃變的異常困難。本篇文章我將分享一種罕見的 Json.NET 資料序列化技巧,幫助你可以做到動態的 JSON 資料回應格式,同時又能保有強型別的設計。

... 繼續閱讀 ...

如何正確地發行 ASP.NET Core 網站到遠端 IIS 站台

我們最近有專案需要發行一個用 ASP.NET Core 5 開發的網站,有經驗的人應該知道,當網站正在執行時,尤其是 Windows 作業系統,過程中所有 *.dll 檔案都會被鎖定,無法成功覆蓋檔案,以致於自動部署失敗。今天這篇文章我打算來分享幾個常見的作法,以及我認為最好的作法。

... 繼續閱讀 ...

使用 global.json 精準的選擇 .NET SDK 版本

我在 2018 年寫過一篇 如何在多個 .NET Core SDK 版本之間進行切換 (global.json) 文章,當時只說明了你如何選擇特定版本,沒有提到當有新版 .NET SDK 出現時,他會怎樣選擇版本。這篇文章我打算來補完這部分技術細節。

... 繼續閱讀 ...

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

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

... 繼續閱讀 ...

如何使用 .NET CLI 快速產生 ASP.NET Core 的 MVC Area 區域

跨平台的 Visual Studio Code 工具日益強大,現在用來開發 ASP.NET Core 3.1 網站完全沒有問題。本篇文章我將分享如何在 Visual Studio Code 裡面搭配一些好用工具,快速建立 MVC Area 必要的目錄與檔案,以及所有開發時需要知道的注意事項。

... 繼續閱讀 ...

如何使用 .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 在做的事情完全一樣,本篇文章就來說說這套工具的用法,以及常見的地雷與注意事項。

... 繼續閱讀 ...

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

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

... 繼續閱讀 ...

如何讓 ASP.NET Core Blazor Server 在斷線時不影響頁面瀏覽

由於第一版 Blazor 屬於連線式的 SPA 應用,所有的頁面變更與資料繫結事實上都是從後端進行計算,透過一種類似 VDOM 的機制,自動計算出網頁要更新的範圍,並且產生必要的 JS 回瀏覽器執行。過程中由於透過 WebSockets 連線,大幅減少前後端通訊的延遲狀況,效率比透過 AJAX 還高出許多。不過預設的 Blazor 專案範本,當網頁在瀏覽器與伺服器斷線時,網頁會無法瀏覽,本篇文章特別點出這個小問題,告訴你該怎樣解決這個小困擾。

... 繼續閱讀 ...