ASP.NET Core 2.0 WebApi全局配置及日誌

来源:http://www.cnblogs.com/vvian/archive/2017/12/17/8052218.html
-Advertisement-
Play Games

最新在將原來寫的一些webSerivce轉換為WebApi,直接就用了ASP.Net Core 2.0的框架,在使用中,發現的與原有的asp.net不同的地方,通過搜索已經慢慢解決,記錄下來備用。 一、全局配置 在asp.net中,全局變更配置寫在web.config中,如下所示 在ASP.Net ...


最新在將原來寫的一些webSerivce轉換為WebApi,直接就用了ASP.Net Core 2.0的框架,在使用中,發現的與原有的asp.net不同的地方,通過搜索已經慢慢解決,記錄下來備用。

一、全局配置

在asp.net中,全局變更配置寫在web.config中,如下所示

 1 <?xml version="1.0"?>
 2 <configuration>
 3 <connectionStrings>
 4     <add name="conn" connectionString="Data Source=localhost;Initial Catalog=helloworld;Integrated Security=True"/>
 5   </connectionStrings>
 6   <appSettings>
 7     <add key="app_key" value="helloworld" />
 8     <add key="app_secret" value="1234567890abcdef" />
 9   </appSettings>
10 </configuration>

在ASP.Net Core 2.0 WebApi中,已經沒有了web.config文件,查了一些資料,可以把全局變數配置寫在appsetting.json文件中,如下所示:

{
  "connectionStrings": {
    "conn": "Data Source=localhost;Initial Catalog=helloworld;Integrated Security=True"
  }
  "appSettings": {
    "app_key": "helloworld",
    "app_secret": "1234567890abcdef"
  }
}

這樣一來,在程式中就可以對全局變數配置進行引用了。

使用appSetting.json,全局變數可以設置的更為複雜,具體的方法可以參考文後的參考文獻。

二、記錄日誌

以前ASP.NET的時候,日誌都是用Nlog進行記錄,現在轉換到了Core 2.0,也準備繼續使用Nlog,在使用中,發現和以前的有也所不同。

首先,在Nuget中獲取NLog.Web.AspNetCore包,

然後將startup.cs文件的代碼進行修改

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
//修改為
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

併在Configure函數中,加上以下語句:

loggerFactory.AddNLog();
app.AddNLogWeb();
loggerFactory.ConfigureNLog(“nlog.config”);

記得要在文件頭先引用using NLog.Web和using NLog.Extensions.Logging;

增加一個"Web配置文件",文件名為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">
    <targets>
        <target xsi:type="File" name="logfile" fileName="${basedir}/logs/${shortdate}.log" keepFileOpen="false" layout="${longdate}|${callsite:fileName=True}|${uppercase:${level}}|${message} ${exception}" />
        <target xsi:type="File" name="debugfile" fileName="${basedir}/logs/${shortdate}_debug.log" keepFileOpen="false" layout="${longdate}|${callsite:fileName=True}|${uppercase:${level}}|${message} ${exception}" />
    <target xsi:type="File" name="errfile" fileName="${basedir}/logs/${shortdate}_error.log" keepFileOpen="false" layout="${longdate}|${callsite:fileName=True}|${uppercase:${level}}|${message} ${exception}" />
  </targets>
    <rules>
    <logger name="*" level="Debug" writeTo="debugfile" />
      <logger name="*" level="Error" writeTo="errfile" />
    <logger name="*" minlevel="Trace" writeTo="logfile" />
    </rules>
</nlog>

然後在程式中就可以開始調用日誌功能了。

二個功能的DEMO代碼如下:

using System;
using System.IO;
using Microsoft.Extensions.Configuration;
using NLog.Extensions.Logging;
using NLog.Web;

public class Program
{
    public static IConfigurationRoot Configuration { get; set; }
    public static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
    public static void ConfigAndLog()
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json");

        Configuration = builder.Build();
        string app_key = Configuration["appSettings:app_key"];
        string coon = Configuration["connectionStrings:conn"];
        log.Debug("資料庫連接為:" + conn);
        return;
    }
}

參考文檔:

[1].Configure an ASP.NET Core App

[2].在 Asp.net core 2.0 的Web Api 添加logging

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 5 public class TestMap { 6 public static void main(String[] args) {... ...
  • 背水一戰 Windows 10 之 控制項(自定義控制項): 自定義控制項的 Layout 系統, 自定義控制項的控制項模板和事件處理的相關知識點 ...
  • 前言 ASP.NET Core 2.0 怎麼發佈到Ubuntu伺服器?又如何在伺服器上配置使用ASP.NET Core網站綁定到指定的功能變數名稱,讓外網用戶可以訪問呢? 步驟 第1步:準備工作 一臺Liunx伺服器:筆者用的是【[搬瓦工][1]】的VPS伺服器(CDN加速,支持支付寶,多機房選擇) 低配版 ...
  • 閱讀目錄 前言 成熟的解決方案 剖析 性能測試 結語 一、前言 在上一篇分散式系統系列中《分散式系統中的必備良藥 —— 服務治理》中闡述了服務治理的一些概念,那麼與服務治理配套的必然會涉及到RPC框架。在當前互聯網的大背景下,RPC的運用應該大家或多或少都有涉及,國內外的RPC框架也是百花齊放。那麼 ...
  • [MY NOTE] [轉載請註明出處] Reference Source: http://www.albahari.com/valuevsreftypes.aspx http://www.c-sharpcorner.com/article/C-Sharp-heaping-vs-stacking-in ...
  • Asp.net 中的狀態管理維護包含ViewState,cookie,session,application,cache五種方式,以下是它們的一些比較: 1.存在於客戶端還是服務端 客戶端: viewstate、cookie 服務端: session、application、cache *sessi ...
  • 轉載地址:http://gnucto.blog.51cto.com/3391516/998509 Redis與Memcached的區別 傳統MySQL+ Memcached架構遇到的問題 實際MySQL是適合進行海量數據存儲的,通過Memcached將熱點數據載入到cache,加速訪問,很多公司都曾 ...
  • 緩存這種能夠提升指令和數據讀取速度的特性,隨著本地電腦系統向分散式系統的擴展,在分散式計算領域中得到了廣泛的應用,稱為分散式緩存。 緩存這種能夠提升指令和數據讀取速度的特性,隨著本地電腦系統向分散式系統的擴展,在分散式計算領域中得到了廣泛的應用,稱為分散式緩存。 中文名分散式緩存外文名Distr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...