Stackexchange.redis: Es war nicht möglich, eine Verbindung zu den Redis-Servern herzustellen. Es ist ein Authentifizierungsfehler aufgetreten...

Erstellt am 15. Mai 2020  ·  3Kommentare  ·  Quelle: StackExchange/StackExchange.Redis

Hallo Leute,

Ich verwende StackExchange.Redis Version 2.1.30 , um eine Verbindung zu einem von Azure gehosteten Redis herzustellen.
Ich erhalte die folgenden Ausnahmen:
1) wenn ich versuche, einen Zeichenfolgenwert (~ 6,5 KB) festzulegen:
_Problem-ID_: **System.Net.Sockets.SocketException at StackExchange.Redis.ExtensionMethods.AuthenticateAsClient**
No connection is active/available to service this operation: SET <key>; A blocking operation was interrupted by a call to WSACancelBlockingCall, mc: 1/1/0, mgr: 10 of 10 available, clientName: <client-name>, IOCP: (Busy=2,Free=998,Min=2,Max=1000), WORKER: (Busy=1,Free=32766,Min=2,Max=32767), v: 2.1.30.38891

2) wenn ich versuche, einen String-Wert abzurufen :
_Problem-ID_: **StackExchange.Redis.RedisConnectionException at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl**
No connection is active/available to service this operation: GET <key>; It was not possible to connect to the redis server(s). There was an authentication failure; check that passwords (or client certificates) are configured correctly. ConnectTimeout, mc: 1/1/0, mgr: 10 of 10 available, clientName: <client-name>, IOCP: (Busy=2,Free=998,Min=2,Max=1000), WORKER: (Busy=1,Free=32766,Min=2,Max=32767), v: 2.1.30.38891

Hinweis: Ich erhalte diese Ausnahmen nur, wenn ich die ASP.NET-Webdienstanwendung in meiner CI- und Stage-Umgebung ausführe (habe noch nicht zu prod gewechselt). Wenn ich die Anwendung lokal ausführe, funktioniert sie (es wurde versucht, eine Verbindung zu den Diensten CI und Stage Redis herzustellen). Außerdem habe ich zu Testzwecken eine einfache Redis-Client-Konsolenanwendung erstellt, die ich in der CI-Umgebung bereitgestellt habe, und mit der Konsolenanwendung kann ich erfolgreich eine Verbindung zu Redis herstellen. Beachten Sie, dass ich genau denselben Ansatz verwendet habe, um eine Verbindung zu Redis wie in der ASP.NET-Webdienstanwendung herzustellen.

Verbindungsimplementierung:

public class RedisConnection
{
    private static readonly string _connectionString = "hostname:6380,password=<valid-password>,ssl=True,abortConnect=False"; //hard coded from web.config

    private static readonly Lazy<ConnectionMultiplexer> LazyConnection;

    static RedisConnection()
    {
        LazyConnection = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(_connectionString));
    }

    public static ConnectionMultiplexer Connection => LazyConnection.Value;

    public static IDatabase RedisCache => Connection.GetDatabase();
}

Und dann verwenden Sie es als

...
private readonly IDatabase _redis = RedisConnection.RedisCache;
...

Jede Hilfe wäre sehr willkommen.

Philipp

Hilfreichster Kommentar

welcher Rahmen ist das? zwei gedanken tauchen auf:

Alle 3 Kommentare

welcher Rahmen ist das? zwei gedanken tauchen auf:

Danke für deine schnelle Antwort, @mgravell . Es ist ein ASP.NET ASMX-Webdienstprojekt. Das Anhängen von ,sslprotocols=tls12 an die Verbindungszeichenfolge hat das Problem behoben. Es gibt eine minimale TLS-Versionseinstellung in Azure, die auf TLS12 festgelegt ist, aber ich habe sie ignoriert, da sie von einer Konsolen-App auf demselben Computer mit derselben Verbindungszeichenfolge funktionierte.

Dieses Thema kann jetzt geschlossen werden. Nochmals vielen Dank, @mgravell. Prost!

Es funktionierte von einer Konsolen-App auf demselben Computer aus

Verschiedene Laufzeiten / Framework-Versionen, wahrscheinlich :)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen