Käsitlemata erand: System.InvalidOperationException: Ajapiirang on aegunud. Aeg on läbi, kuid ühendus pole veel basseinist ära võetud. See võib olla tingitud sellest, et kõik basseiniühendused on kasutusel ja maksimaalne basseini suurus on saavutatud.
See võib juhtuda, kuna kõik basseiniühendused on kasutusel ja maksimaalne basseini suurus saavutatakse.
Lahus:
Esimene asi, mida teha, on ühendus sulgeda kohe, kui seda kasutame. Kui ühendus ei ole suletud, salvestatakse ühendus ühenduse basseini ja GC on teadaolevalt hävitatud. Sellisel juhul arvad, et ühendusbassein pole jõudnud maksimaalse väärtuseni, kuid tegelikult on ühendusbassein jõudnud maksimaalse väärtuseni, teiseks saame kasutada ühendusstringis maksimaalset basseini suurust = N; et dünaamiliselt laiendada ühenduste maksimaalset arvu ühenduses.
Illustreerida:
See tähendab, et kui maksimaalse basseini suuruse väärtust ei ole connectionStringis täpsustatud,Siis maksimaalne basseini suurus=100Kui andmebaasi külastajate arv on 101, ilmub ülaltoodud viga, kui pärast SqlConnection.ConnectionTimeouti määratud aja ootamist (vaikimisi on 15 sekundit) endiselt ühendust pole.
Kui me seadsime:
Kui andmebaasiga samaaegselt ühenduvate külastajate arv on 513, tekib ülaltoodud viga, kui SqlConnection.ConnectionTimeout määratud aja ootamist (vaikimisi on 15 sekundit) ikka ühendust pole.
|