Die Handhabung von SqlConnection erfolgt derzeit durch das Öffnen einer Verbindung, wenn sie zum ersten Mal benötigt wird, mit einer benutzerdefinierten Wiederholungsschleife und das anschließende Speichern der geöffneten Verbindung im HttpContext für den Rest der Anforderung. An diesem Punkt wird die Verbindung verworfen.
Ich glaube, eine Möglichkeit, Probleme mit der Erschöpfung des Verbindungspools zu verhindern, besteht darin, die Verbindung geschlossen zu halten und sie dann zuzulassen Öffnen und schließen Sie es nach Bedarf.
Ich dachte, es wäre besser, eine Wiederholungsrichtlinie beizubehalten, um das System robuster zu machen.
Dazu habe ich einen Wrapper implementiert, der DbConnection erweitert, der eine SqlConnection im Konstruktor akzeptiert.
Meine Wiederholungsrichtlinie sieht so aus:
Code: Select all
private readonly AsyncRetryPolicy _asyncRetryPolicy = Policy.Handle().Or().WaitAndRetryAsync(3, i => TimeSpan.FromSeconds(1 * i));
Meine zweite Frage ist: Wie verhält sich diese Wiederholungsrichtlinie mit dem „Connection Timeout=30“-Teil meiner Verbindungszeichenfolge?
Mobile version