XiaoQi.Study 之 .net core webapi (三)
1、配置跨域
1)、首先注册跨域要求 ,(可访问的IP、端口)
//注册跨域 services.AddCors(options => { options.AddPolicy("XiaoQiAllowOrigins", builder => { builder.WithOrigins("http://localhost:8080") .AllowAnyHeader() .AllowAnyMethod(); }); });
2)、启用注册好的跨域
app.UseCors("MyAllowOrigins");
2、控制器全局异常过滤
1)、在Filter 文件夹下 创建GlobalExceptionFilter.cs。该类必须继承“IExceptionFilter”
public class GlobalExceptionFilter : IExceptionFilter { private readonly IWebHostEnvironment _env; private readonly ILogger<GlobalExceptionFilter> _logger; public GlobalExceptionFilter(IWebHostEnvironment env, ILogger<GlobalExceptionFilter> logger) { _env = env; _logger = logger; } public void OnException(ExceptionContext context) { string msg = string.Empty; if (_env.IsDevelopment()) { msg = context.Exception.StackTrace; LogHelper.Error(msg); } else { msg = context.Exception.Message;//错误信息
LogHelper.Error(msg);
} throw new NotImplementedException(); } }
2)、在注册控制器的地方,为控制器添加全局过滤
//注册Controller services.AddControllers(o=> { o.Filters.Add(typeof(GlobalExceptionFilter));//控制器异常监控 })
3、log4.net 简单使用
1)、安装log4.net 包
2)、在common 文件下创建LogHelper
public class LogHelper { private static ILoggerRepository repository { get; set; } private static ILog _log; private static ILog log { get { if (_log == null) { Configure(); } return _log; } } public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config") { repository = LogManager.CreateRepository(repositoryName); XmlConfigurator.Configure(repository, new FileInfo(configFile)); _log = LogManager.GetLogger(repositoryName, ""); } public static void Info(string msg) { log.Info(msg); } public static void Warn(string msg) { log.Warn(msg); } public static void Error(string msg) { log.Error(msg); } }
3)、添加log4net.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- This section contains the log4net configuration settings --> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="LogFile/" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <staticLogFileName value="false" /> <datePattern value="yyyyMMdd'.log'" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="1MB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <!-- Setup the root category, add the appenders and set the default level --> <root> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net> </configuration>
4)、在startup文件中启用LogHelper的配置方法,为其读取配置
public Startup(IConfiguration configuration) { Configuration = configuration; LogHelper.Configure(); //使用前先配置 }
5)、在需要的地方使用,如控制器全局异常过滤中的使用