zoukankan      html  css  js  c++  java
  • Asp.Net Core实战(干货)

    转自 : https://www.cnblogs.com/sportsky/p/9400419.html

    序言

    使用.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类名可以随意命名,但通常使用系统默认的startup,可以通过startup的构造函数进行依赖注入startup类中必须包含Configure方法同时可以根据实际情况添加ConfigureServices方法,这两个方法均在应用程序运行时被调用。Startup 类的 执行顺序:构造 -> configureServices ->configure

    ConfigureServices方法:主要用于服务配置,比如依赖注入(DI)的配置,使用时该方法必须在Configure方法之前

    Configure方法:用于应用程序响应HTTP请求,通过向IApplicationBuilder实例添加中间件组件来配置请求管道

    二、自定义路由

    在Startup类的Configure方法配置

     View Code

    三、跨域设置

    在Startup类的ConfigureServices方法配置

     View Code

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

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

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

     View Code
     View Code
     View Code

    截图看效果

    五、程序集批量依赖注入

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

    帮助类

     View Code
     View Code

     在Startupl类的ConfigureServices方法中添加

     View Code

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

     View Code
     View Code

     六、使用NLog写入文件日志

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

     View Code

     在Startup类Configure方法中添加配置

     View Code

    写入日志到文件

     View Code

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

    添加依赖项:Microsoft.Extensions.Logging和NLog.Extensions.Logging

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

     View Code

    同第六项代码一样,也是在Configure方法设置,写入日志到数据库

     View Code
     View Code

    八、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 - 规则匹配时日志应该被写入的一系列目标,由逗号分隔。
     
     
     

     目前只整理了这些,后续会持续更新到这里面,如有不合理的地方,请大家加以斧正,,,希望能和大家共同学习、共同进步,,

  • 相关阅读:
    ZOJ 3332 Strange Country II
    ZOJ 3331 Process the Tasks(双塔DP)
    ZOJ 3326 An Awful Problem(模拟)
    HDU 1796 How many integers can you find(容斥原理)
    HDU 4059 The Boss on Mars(容斥原理)
    HDU 4135 Co-prime(容斥原理)
    HDU 5677 ztr loves substring(回文串加多重背包)
    CodeForces 668B Little Artem and Dance
    CodeForces 667A Pouring Rain
    Java实现 LeetCode 764 最大加号标志(暴力递推)
  • 原文地址:https://www.cnblogs.com/moy-1313133/p/9453578.html
Copyright © 2011-2022 走看看