header的content-type紀錄header body的資料格式,後端API可以依據content-type知道header body內的資料格式,再來解析header body資料,進行Model Binding.
CSRF驗證,搭配Angular Interceptor
CSRF驗證,搭配Angular Interceptor
IIS部屬ASP.NET MVC5
IIS部屬ASP.NET MVC5
用RSA替登入密碼加密
做網頁系統開發一定會遇到帳號登入的問題。
大家都知道密碼要用[HttpPost]放在Request Body裡面來進行傳遞。這句話只對了一半,因為只要在瀏覽器按下F12進入開發者模式,密碼還是會被看光光的,好恐怖的阿。
所以對密碼進行加密是最基本的資安防護。
快速建立CRUD WebAPI,以及ModelBinding的應用
這幾天剛 好有機會把WebAPI ModelBinding的方式整理一下,MVC也是差不多的用法,但還是會有一些差異。
今天會用到[FromRoute], [FromQuery], [FromBody]這三種ModelBinding方式
ActionFilter的流程以及ActionFilter流程結束時間點
ActionFilter的流程以及ActionFilter流程結束時間點的研究。
使用ActionFilterAttribute抽象類別。實作IP過濾
使用ActionFilterAttribute抽象類別並覆寫OnActionExecuting。實作IP過濾
.Net 7 Open API Swagger設定
.Net 7 Open API Swagger設定
非同步的執行流程(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範本專案
HttpUtility.HtmlDecode後的" "並非真正的空白字串!
HttpUtility.HtmlDecode後的"& n b s p ;"並非真正的空白字串!
眼前看到的空不是空
分頁功能開發時的注意事項
分頁功能看起來不難,主要資料只要有資料總筆數. 當前頁數. 每頁資料筆數,有了上述資料即可進行相關功能開發,但其實當中還有一些眉眉角角要注意的地方。
AJAX把表單資料POST到後端Action快速教學版本
既然要求快速,那就連描述都省略吧,直接進入重點!
AJAX 加入 AntiForgeryToken
為了防止CSRF攻擊,我們可以在MVC的Controller加上ValidateAntiForgeryToken這個標籤來進行Token的驗證,通常在前端的Form裡面也會加上@Html.AntiForgeryToken()來產生要跟後端驗證的Token,但如果有時候只是要透過AJAX來進行資料異動(ex:刪除資料)這種沒有表單的動作時,我們要把@Html.AntiForgeryToken()加在哪裡才不會打AJAX時老是出現500的回應呢?
ASP.Net MVC實作表單送出功能(使用Html.BeginForm)
Form表單的資料傳到後端是網頁一個很重要的功能,除了直接使用Form Post. Get外,也可以透過Ajax的方式把前端的資料傳遞到後端。
ASP.Net MVC實作資料列裡面的Input欄位資料傳遞到Controller的方法
工作實務中很常遇到這種情境,資料列裡面的Input資料post到Controller的方法。這邊演示一下如何處理處理這種常見的問題。
下載檔案時,瀏覽器出現Not allowed to load local resource的解決方法
今天在寫ASP.Net MVC前端時,客戶要求新增訂單後,可以在檢視模式上傳過的附件加上下載的連結,方便檢視自己上傳過的檔案,但連結放上去後卻一直無法下載…
ManualResetEvent進行執行緒同步,Set(). Reset(). WaitOne()的差別
利用ManualResetEvent來控制子執行緒進行同步作業
用Visual Studio Code建立.Net Core WebAPI專案
用Visual Studio Code建立.Net Core WebAPI專案
- 1
- 2