我已经使用 Ratelimit 从 3.0.5 更新到 4.0.1 并且我收到错误“'无法解析类型'AspNetCoreRateLimit.IProcessingStrategy'的服务同时尝试激活'AspNetCoreRateLimit.IpRateLimitMiddleware”,我可以得到一个答案已更改或添加到 4.0.1 以导致此错误发生?我应该注册一个新的服务吗?

这个问题折腾了半天,原来是需要注入处理策略,如下(红色部分代码):
//需要从加载配置文件appsettings.json
services.AddOptions();
//需要存储速率限制计算器和ip规则
services.AddMemoryCache();
//从appsettings.json中加载常规配置
services.Configure<ClientRateLimitOptions>(Configuration.GetSection("ClientRateLimiting"));
//从appsettings.json中加载客户端规则
services.Configure<ClientRateLimitPolicies>(Configuration.GetSection("ClientRateLimitPolicies"));
//4.0后,必须注入处理策略
services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>();
//注入计数器和规则存储
services.AddSingleton<IClientPolicyStore, MemoryCacheClientPolicyStore>();
services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
注意以上红色部分代码。
本文探讨了在将Asp.NetCoreRateLimit从3.0.5升级到4.0.1时遇到的类型解析错误,重点在于如何在新版本中正确注入IProcessingStrategy服务,以解决'IpRateLimitMiddleware'激活失败的问题。开发者需要了解如何配置内存缓存和策略,并提供示例代码以帮助迁移。
749

被折叠的 条评论
为什么被折叠?



