appsettings.json должен быть зарегистрирован в DI, чтобы вы могли передать конструктору IConfiguration
ThrottleAttribute
и получить от него значение через DI, но вам нужно создать фабрику, чтобы она работала:
public class ThrottleAttributeFactory: ActionFilterAttribute, IFilterFactory
{
public string Count { get; set; }
public bool IsReusable => false;
public IFilterMetadata CreateInstance(IServiceProvider serviceProvider)
{
var attribute = serviceProvider.GetService<ThrottleAttribute>();
attribute.Count = Count;
return attribute;
}
}
Атрибут:
public class ThrottleAttribute : ActionFilterAttribute
{
private readonly IConfiguration _config;
public string Count { get; set; }
public ThrottleAttribute(IConfiguration config)
{
_config = config;
}
//rest of code omitted
}
в вашем методе:
{
var value = _config.GetValue<int>("json:key");
}
и в контроллере заменить [Throttle(Count = 15)]
на [ThrottleAttributeFactory(Count = 15)]
.
Также зарегистрируйте атрибут: services.AddScoped<ThrottleAttribute>();