1.获取配置内容appsetting.json
1.构造函数里注入Iconfigguration config;
2. 通用方式
1.var str=config["ConnecttionString"];
2.获取下一级:var str=config["ConnecttionString:title"];
3.绑定配置模型对象,使用config.Bind(appsetting)绑定指定类对象
4.注册配置选项服务在ConfigureServices方法里
1.注册 services.Configure
2.使用 方法里依赖注入泛型IOptions
appsetting.value.ConnecttionString;
5.自定义配置文件读取
1. var config = new ConfigurationBuilder().AddJsonFile("jsonConfig.json").Build();
var name = config["name"];
2.也可以使用第四步注册为服务
2.多环境配置(约定大于配置)
1.如果将默认名称Development名称改为其它,如Demo,同样在startup里有一个ConfigureDemoServices方法,则不会执行默认的ConfigureServices;
如果是Configure方法则也是相同,其命名为ConfigureDemo
2.也可以单独创建StartupDemo类,但需要改Program.cs启动文件
webBuilder.UseStartup(Assembly.GetExecutingAssembly().FullName);//查找程序集完全名称
3.日志组件
1.日志级别:
1.Trace 记录一些对程序员调试问题有帮助的信息,其中可能包含一些敏感信息, 所以应该避免在生产环境中启用Trace日志
2.Debug 记录一些在开发和调试阶段有用的短时变量(Short-term usefulness), 所以除非为了临时排除生产环境的故障,开发人员应该尽量避免在生产环境中启用Debug日志
3.Information 记录应用程序的一些流程, 例如,记录当前api请求的url
4.Warning 记录应用程序中发生的不正常或者未预期的事件信息。这些信息中可能包含错误消息或者错误产生的条件, 例如, 文件未找到
5.Error 记录应用程序中某个操作产生的错误和异常信息。
6.Critical 记录一些需要立刻修复的问题。例如数据丢失,磁盘空间不足。
2.依赖注入方式ILogger
_logger.LogInformation("正在请求Test接口!");
_logger.LogWarning("三方请求接口,请求终止!");
_logger.LogError("操作异常!");
3.IServiceCollection注入AddLogging
services.AddLogging(builder =>
{
builder.AddConfiguration(Configuration.GetSection("Logging"))
.AddConsole()
.AddDebug();
});
4.注入ILoggerFactory 创建ILogger
//注入ILoggerFactory 创建ILogger
ILogger logger = loggerFactory.CreateLogger
logger.LogInformation("非主机模式输出log message");
5.记录数据库文件用第三方,如elmah.io、Gelf、JSNLog、KissLog.net、Loggr、NLog、Serilog
4.路由
1.app.UseRouting()和app.UseEndPotions()成对出现。
1.app.UseRouting():负责匹配路由与终结点(终端中间件),解析出路由信息,写进HttpContext,传给下一个中间件。
2.app.UseEndPotions():负责执行和配置路由,当终端中间件不止有一个,此时就设置路由,来选择哪个终端中间件
2.这两者之间可以获取路由信息,包括路由数据,对应中间件等,如
app.UseRouting()
app.Use(async(context,next)=>{
var ep = context.GetEndPoint();
await next();
})
app.UseEndPoint()