文章

安裝Docker與錯誤排除

圖片
官網 https://www.docker.com/
按右上角Get Started 按鈕




按右下角的 Download Desktop and Take a Tutorial 按鈕



申請 Docker Hub 帳號,Docker ID 與密碼在安裝完成後的登入也會使用到
按 Get started with Docker Desktop 按鈕,進行安裝檔案下載



執行安裝檔案 Docker for Windows Installer.exe



依電腦顯示訊息一直下一步即可,可能會遇到重新開機的請求




桌面會出現 Docker icon,點兩下執行



螢幕右下角會出現 Docker icon 顯示目前的執行狀態


執行完成會看到登入畫面,到這邊就已經完成安裝囉,請輸入Docker Hub的ID跟密碼



或是使用命令提示字元,輸入 docker version 查看版本資訊


如果一路順順的做完,代表運氣很好XD,其實需要留意 Hyper-V 與 Intell Virtualization Technology 的設定,以下紀錄 3 個遇到的錯誤:

1. Hardware assisted virtualization and data execution protection must be enabled in the BIOS. See https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization-must-be-enabled



表示要調整電腦的BIOS設定,請先檢查電腦的「模擬」設定
開啟 工作管理員 > 效能 ,如果看到「已停用」,代表設定尚未開啟


請重新開機,進入BIOS設定,調 Intell Virtualization

在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=…