發表文章

在ASP.NET Core API 專案中使用NLog將Log寫入檔案

圖片
Visual 版本 : 2017
.NET Code 版本 :  2.2
操作目標 : 將Log寫入檔案與顯示在偵錯的輸出視窗

新增ASP.NET Core API專案

使用Nuget安裝NLog相關套件 1.NLog.Web.AspNetCore  2.NLog

新增NLog.config設定檔 新增方式有兩種: 1.手動自己新增檔案 2.安裝套件NLog.config自動產生檔案
第2種方法發現有個奇怪的地方 自動建立的NLog.config檔案並不會建立在專案目錄下 而是建立在其他目錄中 若您有新增多個專案,皆有安裝此套件 那在編輯NLog.config檔案時,其實會修改到其它的專案設定 因為這些專案參考的都是同一個檔案 且無法更改檔案名稱,覺得蠻奇怪的, 所以我的方法是,安裝完把設定檔另外複製下來貼到專案下,再把此套件移除XD

設定NLog.config屬性 若透過自行產生檔案的方式,請記得將NLog.config的 複製到輸出目錄 修改為 永遠複製 若忽略此步驟,後續整個專案會遇到 HTTP Error 500.30 - ANCM In-Process Start Failure 錯誤而無法執行


調整NLog.config的targets與rules設定
我們先將28 29 與38行移出註解區域,這樣子才能進行測試,先介紹Target與Rule兩大設定,他們彼此之間是相關聯的


Target 預設的設定中,有一個名稱為f 並使用寫入檔案的方式來記錄log
有兩個重要屬性 1. xsi:type 這邊可以設定要將Log記錄在哪邊,例如寫入檔案、顯示在Debug的輸入視窗或者是寫入資料庫等等
2. name 這邊是一個具有辨識的唯一值,等一下會在Rule中使用到
其它屬性
fileName:定義寫入的檔案名稱,將以日期為檔名
layout: Log輸出的格式
相關參數的使用可參考這邊 https://nlog-project.org/config/?tab=layout-renderers
Rule 預設設定中,將會記錄Debug Level以上的紀錄,並且以 f (target的name值) 的方式進行log的儲存
Level介紹 等級由高至低為 Fatal > Error > Warn > Info > Debug > Trac…

Visual Studio 2017 關閉瀏覽器時不要停止偵錯

圖片
開發時我都習慣按F5偵錯,

現在只要一關掉偵錯時自動跳出的瀏覽器時,專案會停止偵錯

十分困擾!找了好久終於找到設定方式

使用以下設定排除此問題,請將下列項目取消勾選

工具 > 選項 > 專案與方案  > Web 專案 > 關閉瀏覽器視窗時,停止偵錯工具

Tools > Options > Projects and Solutions > Web Projects > Stop debugger when browser window is closed



無法在local 使用postman 呼叫 https API

圖片
今天另開了一個.NET Core 2.2的專案,發現有多了一個 設定HTTPS 的按鈕



勾選之後發現postman怎麼打都得不到回應 Could not get any response


但透過瀏覽器是可以正常取得回應的

所以估計應該是postman有什麼問題,後來才知道原來是勾選 HTTPS 所造成的
需要修改postman的設定,就能正常使用囉!

File > Settings > General > REQUEST > SSL certificate verification > Off





ASP.NET Core 2 API 使用 Entity Framework Core

圖片
以下操作使用visual studio 2017

ASP.NET Core:2.0版

資料庫建立方式為Database first


建立ASP.NET Core 2 API 專案步驟可以參考這篇文章 https://greens2314.blogspot.com/2018/09/aspnet-core-2-api.html
建立資料庫資料庫名稱:Demo 資料表:Member、Items


建立資料夾,存放Entity Framework Core所產生的Class跟Context檔案於專案上按右鍵 > 加入 > 新資料夾
輸入資料夾名稱Models,名稱可以自行命名

使用Entity Framework Core建立Entity Class跟Context檔案過去使用Entity Framework的Database first會產生edmx檔案, 但Entity Framework Core沒有這種方便的功能了 比較類似Code First的方式,只能透過下指令的方式去更新物件 工具 > NuGet 封裝管理員 > 套件管理器主控台

在PM>後方輸入以下指令後,按Enter鍵Scaffold-DbContext "Server=ADMIN;Database=Demo;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models




參數說明:

Scaffold-DbContext:資料庫連線字串-OutputDir :要將產生的檔案存放在哪個資料夾-Force:產生的檔案是否要覆寫現有的檔案,如果資料表有異動,這個指定一定要打
查看執行結果Models資料夾:存放由指令產生的DemoContext.cs、Items.cs與Member.csDemoContext.cs:含有兩個屬性Items與Members,後續就能以物件的方式操作資料庫資料OnConfiguring:宣告資料庫連線字串,這邊我們可以看到上一行有警告資訊,後面的補充資料會再另外說明
需要特別注意,如果有任何欄位修改,請去變動資料表的設定然後再重新下指令,指令的最後面記得加上 -Force
Scaffold-DbContext "Server=ADMIN;Database=…

使用範本建立與執行 ASP.NET Core 2 API 專案

圖片
以下操作使用visual studio 2017 建立ASP.NET Core 2 API專案 檔案 > 新增 > 專案
Visual C# > .NET Core > ASP.NET Core Web應用程式

選擇API範本
查看Controller程式碼 Controllers資料夾 > 開啟ValuesController.cs > 查看程式碼 可以由程式中觀察到第一個方法的route為 "api/values" 回傳值為一個含有values1與values2的陣列



執行專案 按下執行按鈕,或按F5
開啟瀏覽器 在網址輸入API路徑 api/values,即可查看回傳結果

其實跟建立ASP.NET MVC專案類似,
透過簡單的下一步動作,很快就可以完成專案的建立

Visual Studio 2017 讓多個專案開啟在同一個瀏覽器

圖片
簡單記錄一下今天遇到的問題

更新到15.7.3之後

發現開始偵錯時,又再次遇到開啟多個瀏覽器的問題

如下圖,當你要一次開啟多個專案時,畫面一直開新瀏覽器出來



在15.6.2版本也有遇到一樣的問題

那時候是使用以下設定排除此問題,可以將下列項目取消勾選

工具 > 選項 > 偵錯 > 一般 > 為ASP.NET啟用Javascript偵錯(Chrome、Edge及IE)

Tools > Options > Debugging > General > Enable JavaScript debugging for ASP.NET (Chrome, Edge and IE)

就可以讓多個專案開啟在同一個瀏覽器當中,透過多個標籤或分頁(Tab)去區分專案



如下圖,方案中有三個專案,在開始偵錯後,會自動開啟一個或目前使用中的Chrom瀏覽器,並將這三個專案透過分頁的方式開啟在同一個瀏覽器中




在Visual Studio 2015時就預設是將多個專案開在同個瀏覽器,只是換到2017後,預設變成開啟獨立的瀏覽器,有點無法適應,所以把這功能關閉

平常是用英文版的,但也把中文的部分寫一下XD

參考資料:
https://stackoverflow.com/questions/40729535/how-to-stop-browser-closing-automatically-when-you-stop-debugging-on-vs-2017


Visual Studio 自動排版格式化程式碼

圖片
在團隊開發過程中,什麼時候是程式碼瘋狂修改的階段呢,
無非就是Code Review了,有時候卡個幾天或是幾個月都是有可能的,
裡面常出現的comment,每次幾乎都會出現的就是排版的問題,
例如空白多一個少一個,括號還沒換行等等的小瑕疵,
對於心思不夠細膩的人而言,真的十分的惱人

團隊中喜歡將大括號換行,
例如:
if(true)
{
  //code
}
else
{
  //code
}

那也許有些團隊喜歡:
if(true){
  //code
}else{
  //code
}

有時候不只括號要不要換行,連else要不要換行都有各自的喜好,
所以有時候要統一使用團隊規定的喜好真的會有眼殘的時候,
自己檢查老半天可能還是有漏網之魚,
但現在不用擔心啦!
只要使用Format 格式化文件就能為你分憂解勞,
設定方式如下:
編輯 > 進階 > 格式化文件




Visual Studio會根據你的環境設定幫你自動重新排版
設定方式如下:
工具 > 選項



切換到
文字編輯器 > C# >程式碼樣式 > 格式化 > 新行

這邊可以設定很多換行的邏輯,
將對應的項目打勾跟取消勾選,下面的黑色區域會顯示排版的格式,
可根據自己或是團隊的喜好去做調整,即可自動排出你想要的格式囉!


如果覺得 編輯 > 進階 > 格式化文件 這個選項太難找到,
可以參考這篇文章,將他加入在明顯的工具列區域喔
http://greens2314.blogspot.tw/2017/09/visual-studio-2015.html