.NETCORE1.0出来了,咦不错,什么开源,跨平台的,观望下等2.0;我擦2.0出来了可以学习了,截止到目前2.1都快出来了,是时候学习一下了。

先建一个webapi项目,从简单的demo开始

l 项目结构总览

新面孔:1)launchSettings.json (启动配置,里面还有环境变量)

2)appsettings.json (应用配置信息,老相好的webconfig的上位者)

3)Startup.CS ( asp.net core 启动时是调用startup类,类似Global.asax,startup 类主要干两件事情 1.可选择性地包括 ConfigureServices 方法以配置应用的服务、必须包括 Configure 方法以创建应用的请求处理管道。)

l 启动运行

不要被新面孔吓到,先运行下,与以往不同,可以进入项目目录使用命令(dotnet run)运行

l 使用Log4net将日志写入到文件及输出控制台,目前log4net已经支持core,利用自己之前封装的log库

1) 引用log4net -》Install-Package log4net -Version 2.0.8  、Install-Package AA.Log4Net -Version 1.0.0

2) 初始化log4net

   public Startup(IConfiguration configuration)

        {

            Configuration = configuration;

            //引入log4net

            string path = AppDomain.CurrentDomain.BaseDirectory;

            var file = Path.Combine(path, "LogCons.log4net.config");

            var logRepository = LogManager.GetRepository(System.Reflection.Assembly.GetEntryAssembly());

            XmlConfigurator.ConfigureAndWatch(logRepository, new FileInfo(file));

            Log4NetLogger.Use();

        }

3) 在ValuesController中打印一下日志

    public IEnumerable<string> Get()

        {

            ILog log = Logger.Get(typeof(ValuesController));

            log.Debug("测试 log4net 日志组件");

            return new string[] { "value1", "value2" };

        }

运行结果

l 获取配置

配置 API 支持内存中 .NET 对象、INI 文件、JSON 文件、XML 文件、命令行自变量、环境变量、加密的用户存储的配置提供程序,以及您创建的所有自定义提供程序。如果您希望对自己的配置利用 JSON 文件,只需添加 Microsoft.Extensions.Configuration.Json NuGet 包。然后,如果您想允许命令行提供配置信息,只需添加 Microsoft.Extensions.Configuration.CommandLine NuGet 包即可(可以在其他配置引用的基础上另外添加,也可以替代其他配置引用添加)。如果您对内置的所有配置提供程序都不满意,也可以创建您自己的提供程序,方法为实现 Microsoft.Extensions.Configuration.Abstractions 中的接口。

看下获取配置代码:

 class Program
    {
        public static IConfiguration Configuration { get; set; }
        static IReadOnlyDictionary<string, string> DefaultConfigurationStrings { get; } =
   new Dictionary<string, string>()
   {
       ["Profile:MachineName"] = "Rick",
       [$",
       [$",
       [$",
       [$",
   };

        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
          .SetBasePath(Directory.GetCurrentDirectory())

          .AddJsonFile("appsettings.json")
          .AddInMemoryCollection(DefaultConfigurationStrings);//json文件

            Configuration = builder.Build();
            //1.通过索引器访问
            Console.WriteLine($"MongoDatabase = {Configuration["MongoDatabase"]}");
            //2.配置包含名称/值对的分层列表,其中节点由冒号 (:) 分隔。 要检索某个值,请使用相应项的键访问 Configuration 索引器:
            Console.WriteLine(
                $"HostName = {Configuration["RabbitMQ:HostName"]}");

            //3.要在 JSON 格式的配置源中使用数组,请在由冒号分隔的字符串中使用数组索引。 以下示例获取上述 wizards 数组中第一个项的名称:
            Console.WriteLine($:Name"]}");

            Console.WriteLine($"Hello {Configuration["Profile:MachineName"]}");

            //4.访问值并不仅限于检索字符串。
            //例如,您可以通过 ConfigurationBinder 的 Get<T> 扩展方法检索值。比如,若要检索主要窗口屏幕Height,您可以使用:
            );
            Console.WriteLine($"Height {left}");
            var window = new MyWindow();
            // 5.这种绑定支持需要引用 Microsoft.Extensions.Configuration.Binder NuGet 包。
            //配置值并不仅限于标量。您可以检索 POCO 对象或甚至整个对象图
            Configuration.GetSection("App:MainWindow").Bind(window);
            Console.WriteLine($"Left {window.Left}");

            Console.WriteLine();

            Console.WriteLine("Press a key...");
            Console.ReadKey();

        }
    }

    public class MyWindow
    {
        public int Height { get; set; }
        public int Width { get; set; }
        public int Top { get; set; }
        public int Left { get; set; }
    }

运行结果

netcore入门-基础的更多相关文章

  1. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  2. mybatis入门基础(二)----原始dao的开发和mapper代理开发

    承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...

  3. 01shell入门基础

    01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...

  4. Markdown入门基础

    // Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...

  5. JavaScript入门基础

    JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...

  6. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  7. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  8. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  9. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

随机推荐

  1. Linux进程实践(3) --进程终止与exec函数族

    进程的几种终止方式 (1)正常退出 从main函数返回[return] 调用exit 调用_exit/_Exit (2)异常退出 调用abort   产生SIGABOUT信号 由信号终止  Ctrl+ ...

  2. centos 下安装mysql-5.6.11

    这次是在centos6.4下安装mysql,在安装之前,你要先确定你的linux已经安装了这些包: wget, gcc-c++, ncurses-devel ,cmake, make ,perl 如果 ...

  3. Unix/Linux中的grep命令(转)

    本文转载自:如何使用Unix/Linux grep命令——磨刀不误砍柴工系列.该博文条理很清晰. grep简介 grep在一个或多个文件中查找与模式字符串(pattern)匹配的行,并将搜索的结果打印 ...

  4. OpenGL Shader Key Points (1)

    1.  Shader起步 1.1.  可编程管线 仅考虑Vertex shader和fragment shader: 1.2.  Shader Object 在编译阶段生成,把shader源代码编译成 ...

  5. 将 MVVM 演化为 MVVMM

    众所周知,MVVM模式解决了Controller的臃肿并方便单元测试,为了方便后续代码维护,在上版本新功能开发中,项目开始使用MVVM模式进行开发. 但从上图可以看出,MVVM模式中,Controll ...

  6. boost pool_allocator 报错 'rebind'

    #include "stdafx.h" #include <vector> #include <boost/pool/pool.hpp> int _tmai ...

  7. git push 小结

    $ git push ssh://git@dev.lemote.com/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中 $ git remote add orig ...

  8. 面试之路(16)-归并排序详解(MergeSort)递归和非递归实现

    归并排序的概念及定义 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并排序是建立 ...

  9. init()和onEnter()方法的区别

    init()和onEnter()这俩个方法都是CCNode的方法.其区别如下: 1.其被调用的顺序是先init(),后onEnter(). 2.init()在类的初始化时只会调用一次. 3.onEnt ...

  10. iPhone开发初探

    本文是作者从一无所知到入门的知识学习过程,并结合自己在嵌入式开发的经验所写的技术总结文章,以供后来者学习. 苹果公司的iphone平台采用Object-c做为native language的开发,Ob ...