public static IMvcBuilder AddApiFilters( this IMvcBuilder mvcBuilder, Action <ApiExeptionFilterOption> action = null) { var options = new ApiExeptionFilterOption(); action?.Invoke(options); if (options?.ErrorFactories.Count < 1) { var defaultErrorFactory = typeof(ApiErrorFactory); mvcBuilder.Services.Configure <ApiExeptionFilterOption>(o => o.ErrorFactories.Add(defaultErrorFactory)); options.ErrorFactories.Add(defaultErrorFactory); } else { mvcBuilder.Services.Configure(action); } foreach (var factory in options?.ErrorFactories) { mvcBuilder.Services.AddTransient(factory); } mvcBuilder.Services .AddTransient <ApiExeptionFilter>() .AddTransient <ApiResultFilter>(); mvcBuilder.AddMvcOptions(o => { o.Filters.Add(typeof(ApiResultFilter)); o.Filters.Add(typeof(ApiExeptionFilter)); }); return(mvcBuilder); }
public ApiExeptionFilter(IServiceProvider provider, IOptions <ApiExeptionFilterOption> options, ILoggerFactory loggerFactory) { this.provider = provider; this.options = options.Value; logger = loggerFactory.CreateLogger <ApiExeptionFilter>(); }