netcore入门-基础

简介: .NETCORE1.0出来了,咦不错,什么开源,跨平台的,观望下等2.0;我擦2.0出来了可以学习了,截止到目前2.1都快出来了,是时候学习一下了。 先建一个webapi项目,从简单的demo开始  项目结构总览    新面孔:1)launchSettings.

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

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

  •  项目结构总览

 

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

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

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

  • 启动运行

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

 

 

  •  使用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" };

        }

运行结果

 

  •  获取配置信息

    配置 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",
       [$"AppConfiguration:MainWindow:Height"] = "400",
       [$"AppConfiguration:MainWindow:Width"] = "600",
       [$"AppConfiguration:MainWindow:Top"] = "0",
       [$"AppConfiguration:MainWindow:Left"] = "0",
   };


        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($"1-name={Configuration["User:0:Name"]}");

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


            //4.访问值并不仅限于检索字符串。
            //例如,您可以通过 ConfigurationBinder 的 Get<T> 扩展方法检索值。比如,若要检索主要窗口屏幕Height,您可以使用:
            var left = Configuration.GetValue<int>("App:MainWindow:Height", 80);
            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; }
    }

 运行结果

 

目录
相关文章
|
4月前
|
中间件 PHP 调度
深入浅出PHP框架之Laravel的优雅
【10月更文挑战第3天】在PHP的世界里,Laravel以其优雅和简洁闻名。本文将带你走进Laravel的世界,探索它的魔法。我们将通过代码示例,一步步揭示Laravel的魅力。准备好,让我们一起开始这场奇妙的旅程吧!
|
9月前
|
缓存 安全 PHP
【PHP开发专栏】Symfony框架核心组件解析
【4月更文挑战第30天】本文介绍了Symfony框架,一个模块化且高性能的PHP框架,以其可扩展性和灵活性备受开发者青睐。文章分为三部分,首先概述了Symfony的历史、特点和版本。接着,详细解析了HttpFoundation(处理HTTP请求和响应)、Routing(映射HTTP请求到控制器)、DependencyInjection(管理依赖关系)、EventDispatcher(实现事件驱动编程)以及Security(处理安全和认证)等核心组件。
178 3
|
关系型数据库 API 数据库
盘点10个.NetCore实用的开源框架项目
盘点10个.NetCore实用的开源框架项目
1264 0
盘点10个.NetCore实用的开源框架项目
|
设计模式 前端开发 数据库
Django的简介安装与配置及两大设计模式1
Django的简介安装与配置及两大设计模式1
152 1
|
关系型数据库 MySQL 数据库
Django的简介安装与配置及两大设计模式2
Django的简介安装与配置及两大设计模式2
128 0
|
3月前
|
缓存 安全 PHP
深入浅出PHP框架之Laravel的优雅与实用
【10月更文挑战第22天】在PHP的世界里,Laravel如同一股清流,以其优雅的设计和实用的功能赢得了广大开发者的喜爱。本文将带你走进Laravel的世界,探索其背后的设计哲学,以及如何利用Laravel构建高效、可维护的Web应用。从路由到模型,从控制器到视图,我们将一步步揭开Laravel的神秘面纱。
89 3
|
6月前
|
缓存 安全 PHP
深入浅出PHP框架:Laravel的优雅之旅
【8月更文挑战第15天】 探索PHP世界里的瑰宝,Laravel框架以其优雅、简洁著称。本文将带你领略Laravel的核心魅力,从安装到构建应用,再到高级特性的应用,让你轻松驾驭这个强大的工具。无论你是PHP新手还是资深开发者,这篇文章都将成为你理解并使用Laravel的指南针。
64 2
|
8月前
|
XML 前端开发 JavaScript
前端简介(HTML+CSS+JS)
前端简介(HTML+CSS+JS)
114 1
|
9月前
|
编译器 程序员 C语言
【C++】入门基础
【C++】入门基础
|
监控 数据可视化 前端开发
一个.NetCore前后端分离、模块化、插件式的通用框架
一个.NetCore前后端分离、模块化、插件式的通用框架
259 0