ServiceStack.Redis.RedisPoolManagerPool.GetClient() - IndexOutOfRangeException

ServiceStack.Redis.RedisPoolManagerPool.GetClient() - IndexOutOfRangeException

我们在 ServiceStack.Redis v4.0.48

中收到以下错误

System.IndexOutOfRangeException: Index was outside the bounds of the array. at ServiceStack.Redis.RedisManagerPool.GetClient() at ServiceStack.Redis.RedisClientManagerCacheClient.Set[T](String key, T value, TimeSpan expiresIn) at ServiceStack.ServiceExtensions.CacheSet[T](ICacheClient cache, String key, T value, Nullable1 expiresIn) at ServiceStack.ServiceStackHost.OnSaveSession(IRequest httpReq, IAuthSession session, Nullable1 expiresIn) at ServiceStack.Auth.OAuthProvider.Authenticate(IServiceBase authService, IAuthSession session, Authenticate request) at ServiceStack.Auth.AuthenticateService.Authenticate(Authenticate request, String provider, IAuthSession session, IAuthProvider oAuthConfig) at ServiceStack.Auth.AuthenticateService.Post(Authenticate request) at ServiceStack.Host.ServiceRunner`1.Execute(IRequest request, Object instance, TRequest requestDto)

我们已尝试将池计数增加到 128(跨越 3 个实例),但没有解决。希望引起遇到这种情况的人的注意,并能就可能发生的事情提供一些指导......

请告诉我诊断需要哪些额外信息。

从@mythz 升级到 4.0.52 的第一条评论最终是解决方案,但重要的是要注意升级会改变 Redis 配置的行为 - 特别是因为它与 Redis 连接字符串相关。

无论如何,对于 4.0.52,您必须在 RedisConfig 上设置默认值(例如 RedisConfig.DefaultRetryTimeout),即使您在连接字符串中设置了等效值也是如此。