Exemple #1
0
        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);
        }
Exemple #2
0
 public ApiExeptionFilter(IServiceProvider provider, IOptions <ApiExeptionFilterOption> options, ILoggerFactory loggerFactory)
 {
     this.provider = provider;
     this.options  = options.Value;
     logger        = loggerFactory.CreateLogger <ApiExeptionFilter>();
 }