dotnet6 NLog範例

目的 在webapi專案下使用NLog套件 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 NLog NLog.Web.AspNetCore 新增nlog.config檔案 在根目錄新增nlog.config檔案 nlog.config寫入程式 在nlog.config寫入官方範例 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Info" internalLogFile="c:\temp\internal-nlog-AspNetCore.txt"> <!-- enable asp.net core layout renderers --> <extensions> <add assembly="NLog.Web.AspNetCore"/> </extensions> <!-- the targets to write to --> <targets> <!-- File Target for all log messages with basic details --> <target xsi:type="File" name="allfile" fileName="c:\temp\nlog-AspNetCore-all-${shortdate}.log" layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}" /> <!-- File Target for own log messages with extra web details using some ASP....

October 8, 2022

dotnet6 Serilog進階範例

目的 讀取appsetting設定檔 二階段初始化 為了簡單化故將Log存入SQLite 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Serilog.AspNetCore Serilog.Sinks.SQLite 編輯Program.cs檔 using Serilog; //第一階段初始化 // var builder = WebApplication.CreateBuilder(args);未使用二階段參數化,builder會跑到try外面 Log.Logger = new LoggerConfiguration() //.ReadFrom.Configuration(builder.Configuration) .CreateBootstrapLogger(); try { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); //第二階段初始化可以取得appsetting的內容,如不使用第二階段初始化, //會需要將 var builder宣告式會移出try(如上方註解處),就會有風險未捕獲builder的錯誤 builder.Host.UseSerilog( (hostingContext, services, loggerConfiguration) => { //使用appsetting loggerConfiguration.ReadFrom.Configuration(builder.Configuration); }); var app = builder....

October 7, 2022

dotnet6 Serilog範例

目的 在webapi專案下使用serilog套件 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Serilog.AspNetCore 編輯Program.cs檔 在最外層包一個try catch目的是為了捕捉啟動階段的錯誤 using Serilog; using Serilog.Events; Log.Logger = new LoggerConfiguration() //Serilog要寫入的最低等級為Information .MinimumLevel.Information() //Microsoft.AspNetCore開頭的類別等極為warning .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) //寫log到Logs資料夾的log.txt檔案中,並且以天為單位做檔案分割 .WriteTo.File("./Logs/log.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); try { Log.Information("Starting web host"); var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); //controller可以使用ILogger介面來寫入log紀錄 builder.Host.UseSerilog(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); return 0; } catch (Exception ex) { Log....

October 7, 2022

dotnet6 EFCore語法說明

目的 說明EFCore基本語法,EFCore的基礎為Linq,所以使用上與Linq邏輯一模一樣,只是語法有些微差異。 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Design 新增Student.cs類別檔 新增Models資料夾,並在裡面新增Student.cs類別檔 編輯Student.cs類別檔 public class Student { public int Id { get; set; } public string Name { get; set; } = "BillHuang"; public int Age { get; set; } } 新增EFCoreContext.cs類別檔 新增DBContext資料夾,並在裡面新增EFCoreContext.cs類別檔 編輯EFCoreContext.cs類別檔 //別忘了using using Microsoft.EntityFrameworkCore; using EFCoreExample_Advanced.Models; namespace EFCoreExample_Advanced.DBContext { //繼承DbContext public class EFCoreContext : DbContext { //複寫OnConfiguring protected override void OnConfiguring(DbContextOptionsBuilder options) { //指定連線字串,連到SQLite options....

October 5, 2022

dotnet6 EFCore範例

目的 透過EFCore對db做查詢,為了降低門檻採用SQLite當範例資料庫。 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Design 新增Student.cs類別檔 新增Models資料夾,並在裡面新增Student.cs類別檔 編輯Student.cs類別檔 public class Student { public int Id { get; set; } public string Name { get; set; } = "BillHuang"; public int Age { get; set; } } 新增EFCoreContext.cs類別檔 新增DBContext資料夾,並在裡面新增EFCoreContext.cs類別檔 編輯EFCoreContext.cs類別檔 //別忘了using using Microsoft.EntityFrameworkCore; using EFCoreExample.Models; namespace EFCoreExample.DBContext { //繼承DbContext public class EFCoreContext : DbContext { //複寫OnConfiguring protected override void OnConfiguring(DbContextOptionsBuilder options) { //指定連線字串,連到SQLite options....

October 4, 2022

dotnet6 Dapper語法說明

目的 說明Dapper基本語法 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Dapper Microsoft.Data.Sqlite 編輯WeatherForecastController檔案 將預設的API註解 基本設定 /// <summary> /// 初始化SQLite /// </summary> /// <returns></returns> private static async Task InitSqliteAsync() { //建立SQLite連線 using var conn = new SqliteConnection("Data Source=Student.sqlite"); var SQL = new StringBuilder(); //判斷是否有Student.sqlite檔案 if (!System.IO.File.Exists(@".\Student.sqlite")) { //新增一張表,就會建立.sqlite檔案 SQL.Append("CREATE TABLE Student( \n"); SQL.Append("Id INTEGER PRIMARY KEY AUTOINCREMENT, \n"); SQL.Append("Name VARCHAR(32) NOT NULL, \n"); SQL.Append("Age INTEGER) \n"); //執行sql語法 await conn.ExecuteAsync(SQL.ToString()); } //Task不建議使用void,當不需要回傳值時會改用Task....

October 3, 2022

dotnet6 Dapper範例

目的 透過dapper對db做查詢,為了降低門檻採用SQLite當範例資料庫。 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Dapper Microsoft.Data.Sqlite(微軟官方還是SQLite官方?黑暗執行緒前輩有做說明,我的選擇比較單純有微軟用微軟) 編輯WeatherForecastController檔案 將預設的API註解 寫新的對外API /// <summary> /// 檢查有沒有sqlite檔案,沒有就新增,並增加一筆資料 /// </summary> /// <returns></returns> [HttpGet("InsertAsync")] public async Task<IActionResult> InsertAsync() { //連接sqlite資料庫 using var connection = new SqliteConnection("Data Source=Student.sqlite"); var SQL = new StringBuilder(); //當找不到sqlite檔案時,建立新表,新表創建後就會產生sqlite檔案了 if (System.IO.File.Exists(@".\Student.sqlite")) { //組語法,新建名為Student的表 SQL.Append("CREATE TABLE Student( \n"); //Id欄位設定數字型別為PKey,並且自動遞增 SQL.Append("Id INTEGER PRIMARY KEY AUTOINCREMENT, \n"); //Name欄位設定為VARCHAR(32)不允許是null SQL.Append("Name VARCHAR(32) NOT NULL, \n"); //Age欄位設定為int SQL.Append("Age INTEGER) \n"); //執行sql語法 await connection....

October 2, 2022

dotnet6 EPPlus圖表範例

目的 使用epplus製作長條圖 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Epplus 設定appsetting檔案 為了避免LicenseException,故需要在appsetting加入下列文字 "EPPlus": { "ExcelPackage": { "LicenseContext": "Commercial" //The license context used } } 編輯WeatherForecastController檔案 將預設的API註解 寫新的對外API [HttpGet(Name = "Import")] public ActionResult ImportExcel() { //建立excel所有操作的實例 using ExcelPackage excelPackage = new(); var ws = excelPackage.Workbook.Worksheets.Add("第一頁"); Random Random = new Random(); //ws.Cells[上下(row),左右(col)] ws.Cells[1, 2].Value = "第一季"; ws.Cells[1, 3].Value = "第二季"; ws.Cells[1, 4].Value = "第三季"; ws.Cells[1, 5].Value = "第四季"; ws.Cells[2, 1]....

October 2, 2022

dotnet6 EPPlus範例

目的 將資料匯出成excel 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 NuGet加入套件 Epplus 設定appsetting檔案 為了避免LicenseException,故需要在appsetting加入下列文字 "EPPlus": { "ExcelPackage": { "LicenseContext": "Commercial" //The license context used } } 編輯WeatherForecastController檔案 將預設的API註解 寫新的對外API [HttpGet(Name = "Import")] public ActionResult ImportExcel() { //建立excel所有操作的實例 using ExcelPackage excelPackage = new(); //properties為excel的屬性,開啟excel後要特別去查看屬性才能看到的資訊 excelPackage.Workbook.Properties.Author = "Bill Huang"; excelPackage.Workbook.Properties.Title = "範例檔案"; excelPackage.Workbook.Properties.Created = DateTime.Now; //建立第一頁工作表(下方所顯示的頁簽) ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("第一頁"); int i = 1; foreach (var c in Summaries) { //選擇指定欄位將資料放入 worksheet....

October 1, 2022

dotnet6 更改回傳Json時為大駝峰命名

目的 將預設回傳的Camel-Case(temperatureCelsius)改為Pascal Case(TemperatureCelsius) 建立新專案 選擇ASP.NET Core Web API專案範本,並執行下一步 設定新的專案 命名你的專案名稱,並選擇專案要存放的位置。 其他資訊 直接進行下一步 編輯WeatherForecastController檔案 將預設的API註解,寫入新的Action,預設不會引用System.Text.Json,記得在最上面using /// <summary> /// 反序列化 /// </summary> /// <returns></returns> [HttpGet("JsonDeserialize")] public ActionResult JsonDeserialize() { var options = new JsonSerializerOptions { PropertyNamingPolicy = null, }; var jsonString = @"{""Name"":""中文名"",""Age"":18,""TemperatureCelsius"":52}"; var Result = JsonSerializer.Deserialize<TestClass>(jsonString,options); return Ok(Result); } public class TestClass { public string Name { get; set; } public int Age { get; set; } public int TemperatureCelsius { get; set; } } Program寫入程式 builder....

September 30, 2022