Asp.Net Core实战
序言
使用.NET Core,團隊可以更容易專注的在.net core上工作。比如核心類庫(如System.Collections)的更改仍然需要與.NET Framework相同的活力,但是ASP.NET Core或Entity Framework Core可以更輕松地進行實質性更改,而不受向后兼容性的限制。.NET Core借鑒了.NET Framework的最佳實踐,并將軟件工程的最新進展結合在一起。
寒暄、扯淡已經完畢,,,下面是我最近時間對.Net Core整理的相關知識,覺得這些在項目中是最基礎且最會應用到的,,,,不喜歡扯理論,直接擼碼:
1、淺談Startup類
2、自定義路由
3、跨域設置
4、自定義讀取配置文件信息
5、程序集批量依賴注入
6、使用NLog寫入文件日志
7、使用NLog寫入數據庫日志
8、Nlog標簽解讀
一、淺談Startup類
在ASP.NET Core應用程序中,使用一個按約定Startup命名的類Startup,在Program.cs中使用WebHostBuilderExtensions?UseStartup <TStartup>方法指定類,但通常使用系統默認的startup,可以通過startup的構造函數進行依賴注入,startup類中必須包含Configure方法同時可以根據實際情況添加ConfigureServices方法,這兩個方法均在應用程序運行時被調用。Startup 類的 執行順序:構造?-> configureServices ->configure
ConfigureServices方法:主要用于服務配置,比如依賴注入(DI)的配置,使用時該方法必須在Configure方法之前
Configure方法:用于應用程序響應HTTP請求,通過向IApplicationBuilder實例添加中間件組件來配置請求管道
二、自定義路由
在Startup類的Configure方法配置
三、跨域設置
在Startup類的ConfigureServices方法配置
其中“AppDomain”這個名字是自定義的,大家可以根據自己的喜好定義不同的名字,配置完成之后,在控制器上面添加[EnableCors("AppDomain")]特性即可,如果要實現全局的跨域設置,可以在Configure方法里面配置app.UseCors("AppDomain"),即能實現全局的跨域設置
四、自定義讀取配置文件信息
?這里是寫的一個公共方法去讀取配置文件appsettings.json
截圖看效果
五、程序集批量依賴注入
我們都知道依賴注入主要是為了方便解耦,解除應用程序之間的依賴關系,在我看來DI、IOC這兩者差不多是一樣的,DI是從應用程序的角度而IOC是從容器的角度,它們主要是對同一件事情的不同角度的描述。然而,,,,,,當我們項目業務比較多的時候,如果要實現多個業務的注入,通常方法是手動一個個的添加注入,這樣可能有點太繁瑣,所以就想到了利用反射實現批量注入,,,,,,
幫助類
?在Startupl類的ConfigureServices方法中添加
調用(Ps:Core.BLL這個類庫里面分別有一個接口IAccountService和一個類AccountService,AccountService類去繼承接口IAccountService并實現接口里面的方法)
?六、使用NLog寫入文件日志
新建配置文件命名為Nlog.config
?在Startup類Configure方法中添加配置
七、使用NLog寫入數據庫日志
添加依賴項:Microsoft.Extensions.Logging和NLog.Extensions.Logging
新建配置文件命名為Nlog.config
USE [MyDb]
GO
/****** Object:? Table [dbo].[NLog_Log]? ? Script Date: 08/09/2018 17:13:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[NLog_Log](
? ? [ID] [int] IDENTITY(1,1) NOT NULL,
? ? [Origin] [nvarchar](500) NULL,
? ? [LogLevel] [nvarchar](500) NULL,
? ? [Message] [nvarchar](500) NULL,
? ? [Desc] [nvarchar](500) NULL,
? ? [Exception] [nvarchar](500) NULL,
? ? [StackTrace] [nvarchar](500) NULL,
? ? [CreateOn] [datetime] NULL
) ON [PRIMARY]
GO
八、Nlog標簽解讀
NLog的使用方式基本上和其它的Log庫差不多,用于輸出日志的級別包括:Trace,Debug,Info,Warn,Error,Fatal
<nlog>標簽
autoReload 修改配置文件后是否允許自動加載無須重啟程序
throwExceptions 內部日志系統拋出異常
internalLogLevel 可選Trace|Debug|Info|Warn|Error|Fatal決定內部日志的級別 Off 關閉
internalLogFile 把內部的調試和異常信息都寫入指定文件里
建議throwExceptions的值設為“false”,這樣由于日志引發的問題不至于導致應用程序的崩潰。
<targets>標簽
<target />區域定義了日志的目標或者說輸出 ,,在這里可以按需設置文件名稱和格式,輸出方式。
name:自定義該target的名字,可供rule規則里使用
type: 定義類型,官方提供的可選類型有:
Chainsaw|ColoredConsole |Console |Database|Debug|Debugger|EventLog|File|LogReceiverService|Mail|Memory|MethodCall|Network |NLogViewer|Null |OutputDebugString|PerfCounter|Trace|WebService
不過常用的還是 File \Database \Colored Console\ Mail
layouts?用來規定布局樣式,語法“${屬性}”,可以把上下文信息插入到日志中,更多布局渲染器可參考https://github.com/nlog/NLog/wiki/Layout%20Renderers
<rules>標簽
各種規則配置在logger里
name - 記錄者的名字
minlevel - 最低級別
maxlevel - 最高級別
level - 單一日志級別
levels - 一系列日志級別,由逗號分隔。
writeTo - 規則匹配時日志應該被寫入的一系列目標,由逗號分隔。?
?目前只整理了這些,后續會持續更新到這里面,如有不合理的地方,請大家加以斧正,,,希望能和大家共同學習、共同進步,
原文地址:https://www.cnblogs.com/sportsky/p/9400419.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的Asp.Net Core实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在本地数据中心安装Service F
- 下一篇: 利用Asp.Net Core的Middl