2016-04-11 6 views
1

Also habe ich ein Software-Programm in Form einer COM-DLL geerbt. (Kein Quellcode, nur die setup.exe)Freigeben von Verbindungen in einem Verbindungspool.

Die DLL stellt über ADO.NET eine Verbindung zu Active Directory her und übergibt eine Zeichenfolge über eine Methode zur Authentifizierung eines Benutzers. (Dies dauert höchstens eine Sekunde)

Das Problem ist, für jeden Benutzer authentifiziert, es öffnet eine Verbindung im Verbindungspool, aber scheinbar schließt es nicht. Also nach 100 Versuchen bekomme ich den Fehler:

"Timeout abgelaufen. Die Zeitüberschreitung Zeitraum vor Erhalt einer Verbindung aus dem Pool. Dies kann aufgetreten sein, weil alle Poolverbindungen verwendet wurden und maximale Poolgröße erreicht wurde."

Meine Frage ist: Wie gehe ich über das Zurücksetzen des Verbindungspools, wenn es 100 erreicht? Gibt es vielleicht eine Registrierungseinstellung, wo ich die maximale Anzahl von Verbindungen ändern kann? Vielleicht schreiben Sie ein Skript, das jede Stunde oder so läuft und den Pool löschen? Idealerweise wäre der Quellcode schön, um die Verbindungszeichenfolge mit den richtigen Parametern zu korrigieren, aber das ist hier nicht verfügbar.

Irgendwelche Vorschläge .....

Antwort

2

Achten Sie darauf, die Verbindung schließen, nachdem Sie es nicht mehr verwenden. Sie können die close-Methode explizit aufrufen

//do something with the conn 
conn.Close(); 

Oder

den using Block verwendet werden, die dafür sorgen, wird die Verbindung, sobald der Code innerhalb des mit Block des Schließens ausgeführt

using(var conn=new SqlConnection("YourConnectionStringHere")) 
{ 
    conn.Open(); 
    // do something 
} 

using Anweisung wird sich darum kümmern, die Verbindung auch zu entsorgen.

Verwandte Themen