ServiceStack.Redis.RedisPoolManagerPool.GetClient() - IndexOutOfRangeException

时间:2016-01-19 16:50:00

标签: servicestack asp.net-4.5 servicestack.redis

我们在ServiceStack.Redis v4.0.48中收到以下错误

  

System.IndexOutOfRangeException:索引超出了数组的范围。   在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,Nullable 1 expiresIn) at ServiceStack.ServiceStackHost.OnSaveSession(IRequest httpReq, IAuthSession session, Nullable 1 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)   在ServiceStack.Auth.AuthenticateService.Post(验证请求)   at ServiceStack.Host.ServiceRunner`1.Execute(IRequest request,Object instance,TRequest requestDto)

我们尝试将池数量增加到128个(跨3个实例),但这并没有解决。希望吸引那些遇到过这种情况的人的注意力,并为可能发生的事情提供一些方向......

请告诉我诊断所需的其他信息。

1 个答案:

答案 0 :(得分:1)

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

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