1. 程式人生 > 其它 >.Net core 基礎 建立及Nlog

.Net core 基礎 建立及Nlog

一、.Net Core 依賴注入

  1. .net core3.1 之前的版本需要手動配置swagger。當前專案.net core5.0版本自動配置完成

  2. 跨域配置

    1.下載依賴包

    2.

        //跨域
services.AddCors(options =>
{
options.AddDefaultPolicy(c =>
{
//AllowAnyOrigin 來源 AllowAnyMethod 方法 AllowAnyHeader頭部資訊
c.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();

​ }); ​ });

3.使用跨域 在路由之後 授權之前

        //路由
app.UseRouting();
//使用跨域!!!!
app.UseCors();
//授權
app.UseAuthorization();

  1. 遷移命令:

    1.add-migration inir

    2.update-database

  2. 不使用駝峰命名規範

    services.AddControllers().AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);

  3. NLog配置

    安裝nlog包

    2、在專案根部建立 nlog.config(全部小寫)檔案。

    3、使用例項

    <?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}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

    <!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
    <target xsi:type="File" name="ownFile-web" fileName="c:\temp\nlog-AspNetCore-own-${shortdate}.log"
    layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite}| body: ${aspnet-request-posted-body}" />

    <!--Console Target for hosting lifetime messages to improve Docker / Visual Studio startup detection -->
    <target xsi:type="Console" name="lifetimeConsole" layout="${level:truncate=4:lowercase=true}: ${logger}[0]${newline} ${message}${exception:format=tostring}" />
    </targets>

    <!-- rules to map from logger name to target -->
    <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="allfile" />

    <!--Output hosting lifetime messages to console target for faster startup detection -->
    <logger name="Microsoft.Hosting.Lifetime" minlevel="Info" writeTo="lifetimeConsole, ownFile-web" final="true" />

    <!--Skip non-critical Microsoft logs and so log only own logs (BlackHole) -->
    <logger name="Microsoft.*" maxlevel="Info" final="true" />
    <logger name="System.Net.Http.*" maxlevel="Info" final="true" />

    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
    </rules>
    </nlog>

    4、更新程式.cs 對比原始碼貼上新程式碼

    using NLog.Web;
    namespace ASP.NET_Core_5_NLog_Example
    {
    public class Program
    {
    public static void Main(string[] args)
    {
    var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();

    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
    webBuilder.UseStartup<Startup>();
    })
    //!!!!!!複製以下
    .ConfigureLogging(logging =>
    {
    logging.ClearProviders();
    logging.SetMinimumLevel(LogLevel.Trace);
    })
    .UseNLog(); // NLog: Setup NLog for Dependency injection
    }
    }

    5、配置應用程式安裝. json

    {
    "Logging": {
    "LogLevel": {
    ///修改Default 為 Trace
    "Default": "Trace",
    "Microsoft": "Warning",
    "Microsoft.Hosting.Lifetime": "Information"
    }
    },
    "AllowedHosts": "*"
    }

    6、 寫日誌 將 ILogger 注入控制器:

    using Microsoft.Extensions.Logging;

    public class HomeController : Controller
    {
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
    _logger = logger;

    }

    public IActionResult Index()
    {
    _logger.LogInformation("測試");
    return View();

二、EF Core

  1. .net core使用EF core如下

  2. 引用依賴包 using Microsoft.EntityFrameworkCore;

    當前類繼承DBContext 建立上下文

    新增上下文

    連線資料庫