Ubehandlet undtagelse: System.InvalidOperationException: Timeout'en er udløbet. Timeouten er udløbet, men forbindelsen er endnu ikke taget fra poolen. Dette kan skyldes, at alle poolforbindelser er i brug, og den maksimale poolstørrelse er nået.
Dette kan ske, fordi alle poolforbindelser er i brug, og den maksimale poolstørrelse nås.
Opløsning:
Det første, vi skal gøre, er at lukke forbindelsen, så snart vi bruger den. Hvis forbindelsen ikke er lukket, gemmes forbindelsen i forbindelsespoolen, og GC'en vides at være ødelagt. I dette tilfælde tror du, at forbindelsespuljen ikke har nået maksimumsværdien, men at forbindelsespuljen faktisk har nået maksimumsværdien; for det andet kan vi bruge Max Pool-størrelse = N i forbindelsesstrengen; for dynamisk at udvide det maksimale antal forbindelser i forbindelsespuljen.
Illustrere:
Det vil sige, hvis værdien af maksimal poolstørrelse ikke er specificeret i connectionString,Så max poolstørrelse =100Hvis antallet af besøgende i databasen er 101, vil ovenstående fejl dukke op, hvis der stadig ikke er nogen tilgængelig forbindelse efter at have ventet på den tid, der er sat af SqlConnection.ConnectionTimeout (standard er 15 sekunder).
Når vi sætter til:
Hvis antallet af besøgende, der forbinder til databasen samtidig, er 513, vil ovenstående fejl opstå, hvis der stadig ikke er nogen tilgængelig forbindelse efter at have ventet på den tid, der er sat af SqlConnection.ConnectionTimeout (standard er 15 sekunder).
|