header的content-type紀錄header body的資料格式,後端API可以依據content-type知道header body內的資料格式,再來解析header body資料,進行Model Binding.
用RSA替登入密碼加密
做網頁系統開發一定會遇到帳號登入的問題。
大家都知道密碼要用[HttpPost]放在Request Body裡面來進行傳遞。這句話只對了一半,因為只要在瀏覽器按下F12進入開發者模式,密碼還是會被看光光的,好恐怖的阿。
所以對密碼進行加密是最基本的資安防護。
快速建立CRUD WebAPI,以及ModelBinding的應用
這幾天剛 好有機會把WebAPI ModelBinding的方式整理一下,MVC也是差不多的用法,但還是會有一些差異。
今天會用到[FromRoute], [FromQuery], [FromBody]這三種ModelBinding方式
Log套件 - Serilog(on Linux Ubuntu)
寫Web API時最討厭遇到500 (Internal Server Error)這種後端程式錯誤了,只返回一個Error Responese,c#的catch也抓不到錯誤訊息。由於不是本機環境,也沒有辦法下中斷點Debug,所以也不知道該如何除錯,這時候就知道紀錄後端Log的重要性了。
之前使用的原本是ElmahCore,但爬文後,發現Serilog的使用率比較高,相關資料也比較多。

ActionFilter的流程以及ActionFilter流程結束時間點
ActionFilter的流程以及ActionFilter流程結束時間點的研究。
使用ActionFilterAttribute抽象類別。實作IP過濾
使用ActionFilterAttribute抽象類別並覆寫OnActionExecuting。實作IP過濾
.Net 7 Open API Swagger設定
.Net 7 Open API Swagger設定
Linux Ubuntu部屬.Net Core程式 with Angular
- 163
- 0
- Linux(Ubuntu)
- 2024-05-03
Linux Ubuntu實際架站(.Net WebAPI + Angular)範例
非同步的執行流程(await/async)
寫.Net程式一定會遇到非同步(await/async),async要放在哪裡比較沒有異議,但await放的地方才是重點。
透過HttpClient呼叫RestAPI的Model Binding
當我們透過HttpClient要調用API時,Model Binding是一個重要的東西。要給API的參數可以來自URL網址參數,可以以來自網址路由,可以來自表單。
如果是POST的話,資料則是可以放在Body裡面。
這篇文章整理了一些比較常見的傳輸參數的作法。
Insomnia呼叫由Kestrel啟動的Web API時,會一直回應401 Unauthorized錯誤
這幾天再用Insomnia測試API時,發現到:
使用IIS Express啟動網頁時,API可以透過Insomnia成功呼叫。
但使用Kestrel(https)啟動網頁時,呼叫API會一直回應401 Unauthorized的錯誤,但直接用瀏覽器卻又可以成功呼叫API。
SignalR(二):Server to all Client推播 & Client to all Client廣播
SignalR是一個自己蠻有興趣的東西,提供Server與Client端之間的即時通訊,而且使用也不算複雜。
SignalR所提供的功能有:
- 自動處理連接管理。
- 同時將訊息傳送給所有已連線的用戶端。 例如,聊天室。
- 將訊息傳送給特定用戶端或用戶端群組。
- 調整以處理增加的流量。
這次利用SignalR來做個訊息推播(Server to Client) & 廣播(Client to Client)的簡單範例。
SignalR(一):Server to Client推播
Client to Client廣播測試請參考另外一篇文章 => SignalR(二):Server to all Client推播 & Client to all Client廣播
=================
SignalR是一個自己蠻有興趣的東西,提供Server與Client端之間的即時通訊,而且使用也不算複雜。
SignalR所提供的功能有:
- 自動處理連接管理。
- 同時將訊息傳送給所有已連線的用戶端。 例如,聊天室。
- 將訊息傳送給特定用戶端或用戶端群組。
- 調整以處理增加的流量。
這次利用SignalR來做個訊息推播的簡單範例。
.Net Core DI 服務生命週期
.Net Core DI 服務生命週期
LINQ Except()使用時的注意事項
最近再使用Except()時,遇到個問題。明明他的功能就是要幫我們找出a有b沒有的資料,但結果卻一直跑出a已經有了,b也有的重複資料,研究了一下發現問題還蠻有趣的,也可以順便回憶一下reference type跟value type的相關知識喔~
.Net core如何在本機開發環境切換不同的組態設定appsettings來進行測試
我們在寫程式時,通常會把設定寫在appsettings.json裡面,但是不同的開發環境會有不同的設定值(例如:檔案產出路徑…etc)。.Net預設會使用appsettings.json這個檔案的設定值,但如果我們有不同的組態設定檔時(例如:DEV. SIT. UAT. PRD)。我們就要分別先新增appsettings.DEV.json, appsettings.SIT.json,appsettings.UAT.json,appsettings.PRD.json,其中的DEV.SIT.UAT會對應到不同的環境變數(appsettings.{環境變數}.json),有了不同環境的設定檔後,下面會來教大家要如何在本機開發環境切換不同的設定檔來進行測試。
從無到有建立一個前後端分離的新專案(Angular + .Net Core WebAPI + PostgreSQL)
最近工作剛好有個自己從無到有建置一個專案的機會,自己也是第一次從無到有的自己建置一個專案,機會難得,紀錄一下整個過程,大致會有下列幾個主要步驟:
- 建立後端.Net Core WebAPI新專案
- 建立Angular新專案,並安裝Angular Material & Bootstrap
- 建立資料(Repository)層
- 後端API權限設定
- Angular呼叫後端WebAPI & CORS處理
.Net Core 加入Windows驗證功能
雖然現在的WebAPI大部分採用Token方式來驗證,但企業內部的話,大部分還是會直接採用Windows驗證。
最近開發新專案,剛好有使用到身分驗證的相關功能,趁這次機會把.Net 的身分驗證相關問題紀錄一下。
.Net Core WebAPI 傳值到後端Controller的方法
網頁功能最常用的就是資料間的傳遞,不管事表單資料傳送到後台,或者是輸入查詢資料後,由後端DB回傳資料。這之間都少不了傳輸資料到後台。
在以前MVC的時候,可以透過Razor語法的HTML Helper的BeginForm,在Submit之後,會透過ModelBinding把資料傳到後端Controller。
或是在View直接把整個Form序列化(serilizeArray)後再傳給後端。
現再寫前後分離(Angular + .Net 6 WebAPI)採用WebAPI來開發,剛完成第一個前後分離專案,順便把資料傳送到Controller的方式記錄下來。
.Net Core使用FromSqlRaw()直接下SQL撈取資料,並存放到自定義類別
撈取DB資料時,如果是單一資料來源的話,直接使用EF Core是很方便。但更多時候資料來源是多張表單,Join完之後又要Group By,好了之後再把結果拿去Join其他表,或是再做子查詢。像這種時候如果沒有寫成View而是直接用Lambda或是LinQ語法來兜的話,實在是寫得很痛苦。以我來說,只要是查詢語法比較複雜的話我都習慣直接下SQL語法,再用自定義類別來接查詢結果。
記得以前在.Net Framework的時候,做法好像沒有這麼複雜,.Net Core會比較複雜一點,以下是使用PostgreSQL來實作,但使用MS SQL應該也不會差太多。
另外附上以前.Net Core3使用ADO.Net的方式
.Net 5建立Angular範本專案
.Net 5建立Angular範本專案
用Visual Studio Code建立.Net Core WebAPI專案
用Visual Studio Code建立.Net Core WebAPI專案
用Visual Studio Code建立.Net Core Console專案
用Visual Studio Code建立.Net Core Console專案
.Net Core使用ADO.Net方式直接下SQL撈取資料,並存放置自定義類別
.Net Core其實也可以使用.Net Framework時期那種ADO.Net的寫法
只是取連線字串的方式有點不同。其他步驟都大同小異
流程大致如下:
1.於建構子注入IConfiguration。之後就可以用實作GetValue取得appsettings.json裡的連線字串
2.下SQL做查詢,並用SqlDataAdapter接資料並塞進DataSet
3.把DataRow跟Model做Mapping。傳到View時就可以用強型別寫Razor語法
- 1