2016-07-06 2 views
1

ich Ärger mit dem folgenden Fehler, die mich:ASP - das Zeitlimit wird vor eine Verbindung aus dem Pool zu erhalten

"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."

Es scheint, dass der Fehler in dem folgenden Codeblock:

da = new SqlDataAdapter(command); 
command.CommandTimeout = 100; 
da.Fill(dt); 
conn.Close(); 
return dt; 
+0

Wahrscheinlich sollte den Befehl und die Verbindung in einer using-Anweisung umbrechen. Das könnte dazu beitragen, dass Ihre Verbindungen undicht werden. –

Antwort

0

Wenn Sie eine Verbindung öffnen und nach Abschluss nicht schließen, wird Ihnen der obige Fehler angezeigt. Da es eine App-Pool-Größenbeschränkung gibt, wird nach dem Überschreiten des Limits ein Fehler angezeigt.

Versuchen Sie also, die Verbindung nach Abschluss der Methode zu schließen. Oder Sie können die maximale Größe des Pools in der Datei web.config als 1000 oder mehr festlegen.

+0

Was ich nicht bekomme, ist, dass ich bereits einen conn.Close() im Code habe. Warum besteht also die Möglichkeit einer nicht geschlossenen Verbindung? –

+0

Wenn Ihre Site mehrere Sitzungen hat und Sie die Verbindung nicht jedes Mal nach dem Öffnen schließen, dann ist das Problem des App-Pools. Sie sagen mir die aktuelle Verbindung, aber wir möchten alle Datenbankverbindungen sehen, die sich im offenen Zustand befinden. Mit dem Befehl sp_who2 erhalten Sie Informationen über alle Verbindungen. –

Verwandte Themen