Kezeletlen kivétel: System.InvalidOperationException: Az időtúllépés lejárt. A szünet lejárt, de a csatlakozás még nem került ki a medencéből. Ez azért lehet azért, mert minden medencekapcsolat használatban van, és elérték a maximális medenceméretet.
Ez akkor fordulhat elő, mert minden medencecsatlakozás használatban van, és elérik a maximális medenceméretet.
Megoldás:
Az első lépés, hogy azonnal lezárjuk a kapcsolatot, amint használjuk. Ha a kapcsolat nincs bezárva, akkor a kapcsolat elmentődik a csatlakozási poolba, és a GC ismert, hogy megsemmisült. Ebben az esetben úgy gondoljuk, hogy a kapcsolati pool nem érte el a maximális értéket, de valójában a kapcsolati pool elérte a maximális értéket, másodszor a maximális Pool Size = N függvényt használhatjuk a kapcsolati láncban; dinamikusan bővíteni a kapcsolati pool maximális számú kapcsolatát.
Illusztrál:
Vagyis, ha a maximális pool méret értéke nincs megadva a connectionString-ben,Akkor maximális pool méret=100Ha az adatbázis látogatóinak száma 101, akkor a fenti hiba akkor jelenik meg, ha a SqlConnection által meghatározott idő megvárása után sem elérhető Kapcsolat. A ConnectionTimeout által meghatározott idő megvárása után (alapértelmezett idő 15 másodperc).
Amikor beállítottuk a következő lépésekre:
Ha az adatbázishoz egyszerre 513 látogató csatlakozik, a fenti hiba akkor jelentkezik, ha a SqlConnection.ConnectionTimeout által meghatározott idő után (alapértelmezés 15 másodperc) még mindig nincs elérhető kapcsolat.
|