Ich führe Integrationstests gegen einen Azure Redis Cache durch. Das ist meine sehr einfache Cache-Implementierung:Azure Redis Cache: Kann in einem Integrationstest eine Verbindung zum Cache hergestellt werden?
public class RedisCacheEngine : ICacheEngine
{
private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
var config = new ConfigurationService();
var connectionString = config.Get("Redis.ConnectionString");
var connection = ConnectionMultiplexer.Connect(connectionString);
return connection;
});
private static ConnectionMultiplexer Connection => LazyConnection.Value;
public TValue Get<TValue>(string key) where TValue : class
{
var redisValue = Connection.GetDatabase().StringGet(key);
return redisValue == RedisValue.Null
? default(TValue)
: JsonConvert.DeserializeObject<TValue>(redisValue);
}
public void Set<TValue>(string key, TValue value) where TValue : class =>
Connection.GetDatabase().StringSet(key, JsonConvert.SerializeObject(value));
public void Remove(string key) => Connection.GetDatabase().KeyDelete(key);
}
Als ich im connection
Objekt suchen im Debugger, seine failureMessage
Feld liest „SocketFailure auf PING“. Ich glaube nicht, dass der Server das Zeitlimit überschreitet, da das Timeout-Fenster großzügige fünf Sekunden beträgt und ich auf einem schnellen System mit einer schnellen Verbindung bin.
Die Verbindungszeichenfolge ist eine Standard-Azure Redis Cache-String, der Form
myapp.redis.cache.windows.net:6380,password=___,ssl=True,abortConnect=False
I habe versucht, ssl = False zu setzen, aber ohne Erfolg.
Ich würde gerne diese Tests in meiner Build-Umgebung ausführen können, aber im Moment kann ich keine funktionierende Verbindung abrufen. Ich kann nichts Offensichtliches erkennen, dass ich in der Dokumentation fehlen könnte. Gibt es irgendwelche Überprüfungen, die ich durchführen kann, um sicherzustellen, dass ich das Richtige mache?