netcore入门-基础
.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入门-基础的更多相关文章
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- 01shell入门基础
01shell入门基础 为什么学习和使用shell编程 shell是一种脚本语言,脚本语言是相对于编译语言而言的.脚本语言不需要编译,由解释器读取程序并且执行其中的语句,而编译语言需要编译成可执行代码 ...
- Markdown入门基础
// Markdown入门基础 最近准备开始强迫自己写博文,以治疗严重的拖延症,再不治疗就“病入骨髓,司命之所属,无奈何”了啊.正所谓“工欲善其事,必先利其器”,于是乎在写博文前,博主特地研究了下博文 ...
- JavaScript入门基础
JavaScript基本语法 1.运算符 运算符就是完成操作的一系列符号,它有七类: 赋值运算符(=,+=,-=,*=,/=,%=,<<=,>>=,|=,&=).算术运 ...
- C++ STL编程轻松入门基础
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...
- HTML入门基础教程相关知识
HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
随机推荐
- Java中的五种单例模式
Java模式之单例模式: 单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例. 特点: 1,一个类只能有一个实例 2 自己创建这个实例 3 整个系统都要使用这个实例 例: 在下面 ...
- Android 纵向跑马灯滚动效果
像淘宝和京东都会有跑马灯的效果,今天给大家贡献下以前项目的一个demo,各位看官,且看效果图. 我们先定义一个Bean文件,这个实体类文件主要包含标题,内容描述,以及还有跳转的链接. LampBean ...
- python发送post请求
urllib2.urlopen() urlib2是使用各种协议完成打开url的一个扩展包.最简单的使用方式是调用urlopen方法,比如 def urlopen(url, data=None, tim ...
- javascript语法之流程控制语句
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ORACLE收集统计信息
1. 理解什么是统计信息 优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划.优化器统计信息包括: · ...
- PYTHON风格规范-Google 开源项目风格指南
Python风格规范 分号 Tip 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 Tip 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Py ...
- Android Widget 开发详解(二) +支持listView滑动的widget
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/47027263 不少开发项目中都会有widget功能,别小瞧了它,他也是androi ...
- XBMC源代码分析 2:Addons(皮肤Skin)
前文已经对XBMC源代码的整体架构进行了分析: XBMC源代码分析 1:整体结构以及编译方法 从这篇文章开始,就要对XBMC源代码进行具体分析了.首先先不分析其C++代码,分析一下和其皮肤相关的代码. ...
- 对Linux0.11 中 进程0 和 进程1分析
1. 背景 进程的创建过程无疑是最重要的操作系统处理过程之一,很多书和教材上说的最多的还是一些原理的部分,忽略了很多细节.比如,子进程复制父进程所拥有的资源,或者子进程和父进程共享相同的物理页面,拥有 ...
- 关于学习MMU的一点感想
MMU的一个主要服务是能把各个人物作为各自独立的程序在其自己的虚拟存储空间中运行. 虚拟存储器系统的一个重要特征是地址重定位.地址重定位是将处理器核产生的地址转换到主存的不同地址,转换由MMU硬件完成 ...