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方法配置

Asp.Net Core实战

三、跨域设置

在Startup类的ConfigureServices方法配置

Asp.Net Core实战

其中“AppDomain”这个名字是自定义的,大家可以根据自己的喜好定义不同的名字,配置完成之后,在控制器上面添加[EnableCors("AppDomain")]特性即可,如果要实现全局的跨域设置,可以在Configure方法里面配置app.UseCors("AppDomain"),即能实现全局的跨域设置

四、自定义读取配置文件信息

 这里是写的一个公共方法去读取配置文件appsettings.json

Asp.Net Core实战

Asp.Net Core实战

截图看效果

Asp.Net Core实战

五、程序集批量依赖注入

我们都知道依赖注入主要是为了方便解耦,解除应用程序之间的依赖关系,在我看来DI、IOC这两者差不多是一样的,DI是从应用程序的角度而IOC是从容器的角度,它们主要是对同一件事情的不同角度的描述。然而,,,,,,当我们项目业务比较多的时候,如果要实现多个业务的注入,通常方法是手动一个个的添加注入,这样可能有点太繁琐,所以就想到了利用反射实现批量注入,,,,,,

帮助类

Asp.Net Core实战

Asp.Net Core实战

 在Startupl类的ConfigureServices方法中添加

Asp.Net Core实战

调用(Ps:Core.BLL这个类库里面分别有一个接口IAccountService和一个类AccountService,AccountService类去继承接口IAccountService并实现接口里面的方法)

Asp.Net Core实战

Asp.Net Core实战

Asp.Net Core实战

 六、使用NLog写入文件日志

新建配置文件命名为Nlog.config

Asp.Net Core实战

 在Startup类Configure方法中添加配置

Asp.Net Core实战

Asp.Net Core实战

七、使用NLog写入数据库日志

添加依赖项:Microsoft.Extensions.LoggingNLog.Extensions.Logging

新建配置文件命名为Nlog.config

Asp.Net Core实战

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

Asp.Net Core实战

八、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实战