.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", ??????[$"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; } ???}
运行结果
netcore入门-基础
原文地址:https://www.cnblogs.com/chengtian/p/9020059.html