Log套件 - Serilog(on Linux Ubuntu)

寫Web API時最討厭遇到500 (Internal Server Error)這種後端程式錯誤了,只返回一個Error Responese,c#的catch也抓不到錯誤訊息。由於不是本機環境,也沒有辦法下中斷點Debug,所以也不知道該如何除錯,這時候就知道紀錄後端Log的重要性了。

之前使用的原本是ElmahCore,但爬文後,發現Serilog的使用率比較高,相關資料也比較多。

...繼續閱讀 »

.Net Core DI 服務生命週期

Scoped:每次Post/Get Request在Application結束前,都會使用相同的instance

Transient:每次注入都會建立新的instance

Singleton:應用程式從開始到結束,使用的都是同一個instance。(ex:執行應用程式後,會先進入Program,接著執行Post/Get Request,接著再執行一次Post/Get Request。這種情況使用的都是同一個Service實體。第二次Post/Get Request不會再進入Program,不算Application結束)。

...繼續閱讀 »

.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)

最近工作剛好有個自己從無到有建置一個專案的機會,自己也是第一次從無到有的自己建置一個專案,機會難得,紀錄一下整個過程,大致會有下列幾個主要步驟:

  1. 建立後端.Net Core WebAPI新專案
  2. 建立Angular新專案,並安裝Angular Material & Bootstrap
  3. 建立資料(Repository)層
  4. 後端API權限設定
  5. Angular呼叫後端WebAPI & CORS處理
...繼續閱讀 »

.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 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語法

 

...繼續閱讀 »