基础功能配置
大约 2 分钟
基础功能配置
主机
服务器
环境
选项配置
在主程序启动时
var builder = WebApplication.CreateBuilder(args);
会默认加载配置文件配置文件加载顺序:
- 加载现有的 IConfiguration (CreateBuilder 之前定义的配置)
- 加载项目根目录下的 appsettings.json
- 加载项目根目录下的 appsettings.{Environment}.json
- 加载“用户机密”配置(开发环境时)
- 加载环境变量中的配置
- 加载命令行中的配置
ASP.NET Core 会从环境变量中读取名字为 ASPNETCORE_ENVIRONMENT 的值作为当前环境
- 项目属性 >> 调试 >> 配置文件 >> 环境变量,默认为 Development
- 推荐值:Development(开发环境)、Staging(测试环境)、Production(生产环境)
- 读取:
app.Environment.EnvironmentName
日志
配置日志
日志记录配置通常由
appsettings.{ENVIRONMENT}.json
文件的Logging
部分提供"Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }
LogLevel
:Trace
= 0、Debug
= 1、Information
= 2、Warning
= 3、Error
= 4、Critical
= 5 和None
= 6Logging.{PROVIDER NAME}.LogLevel
中的设置会覆盖Logging.LogLevel
中的设置,其中{PROVIDER NAME}
占位符是提供程序名称{ "Logging": { "LogLevel": { // All providers, LogLevel applies to all the enabled providers. "Default": "Error", // Default logging, Error and higher. "Microsoft": "Warning" // All Microsoft* categories, Warning and higher. }, "Debug": { // Debug provider. "LogLevel": { "Default": "Information", // Overrides preceding LogLevel:Default setting. "Microsoft.Hosting": "Trace" // Debug:Microsoft.Hosting category. } } } }
单独设置日志级别:
- 特定提供程序:例如,
Logging:EventSource:LogLevel:Default:Information
- 特定类别:例如,
Logging:LogLevel:Microsoft:Warning
- 所有提供程序和所有类别:
Logging:LogLevel:Default:Warning
- 特定提供程序:例如,
日志消息模板
消息模板可包含要填写参数的占位符,占位符中使用名称而不是数字。
_logger.LogInformation("Parameters: {pears}, {bananas}, {apples}", apples, pears, bananas);
使用消息模板允许日志记录提供程序实现语义或结构化日志记录
第三方日志记录提供程序
- elmah.io(GitHub 存储库)
- Gelf(GitHub 存储库)
- JSNLog(GitHub 存储库)
- KissLog.net(GitHub 存储库)
- Log4Net(GitHub 存储库)
- NLog(GitHub 存储库)
- PLogger(GitHub 存储库)
- Sentry(GitHub 存储库)
- Serilog(GitHub 存储库)
- Stackdriver(Github 存储库)
跨域 CORS
跨域解决方案:JSONP、前端代理后端请求、CORS等
实现跨域原理:在服务器的响应报文头中通过 access-control-allow-origin 告诉浏览器允许跨域访问的域名。
在
Program.cs
的var app=builder.Build()
之前注册string[] urls = new[] { "http://localhost:3000" }; builder.Services.AddCors(options => options.AddDefaultPolicy(builder => builder.WithOrigins(urls) .AllowAnyMethod().AllowAnyHeader().AllowCredentials()));
在
Program.cs
的app.UseHttpsRedirection()
之前启用跨域app.UseCors()