Вы добавляете IRateLimitCounterStore
в конвейер здесь:
.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>()
Вы можете видеть из источника , что класс MemoryCacheRateLimitCounterStore
принимает IMemoryCache
в своем конструкторе :
public MemoryCacheRateLimitCounterStore(IMemoryCache cache) : base(cache)
{
}
Если вы не предоставите IMemoryCache
для своего конвейера, этот класс не может быть создан с помощью DI (это то, что говорит вам ошибка).
Looking в истории исходного файла он, кажется, всегда требовал этот параметр для своего конструктора. Возможно, в версии 2.1 какой-то другой сервис добавлял IMemoryCache
за кулисами, но больше не добавлял его для вас в 3.0.
Нет особого беспокойства по поводу добавления кеша памяти - это всегда было добавлено как-то, пока вы используете MemoryCacheRateLimitCounterStore
. Кажется, вам просто нужно добавить это самостоятельно в этот момент.