Изключение за необработено: System.InvalidOperationException: Таймаутът е изтекъл. Таймаутът е изтекъл, но връзката все още не е прекъсната от пула. Това може да се дължи на факта, че всички връзки за басейна са в експлоатация и максималният размер на пула е достигнат.
Това може да се случи, защото всички връзки на пула са в употреба и максималният размер на пула се достига.
Решение:
Първото нещо, което трябва да направим, е да затворим връзката веднага щом я използваме. Ако връзката не е затворена, тя се запазва в пула за връзки и е известно, че GC е унищожен. В този случай мислите, че пулът на връзките не е достигнал максималната стойност, но всъщност пулът на връзките е достигнал максималната стойност; второ, можем да използваме максималния размер на пула = N в низа на връзката; за динамично разширяване на максималния брой връзки в пула на връзките.
Илюстрирам:
Тоест, ако стойността на максималния размер на пула не е посочена в connectionString,Тогава максимален размер на пула=100Ако броят на посетителите на базата данни е 101, горната грешка ще се появи, ако все още няма налична връзка след изчакване на зададеното от SqlConnection.ConnectionTimeout време (по подразбиране е 15 секунди).
Когато се заемем да:
Ако броят на посетителите, които се свързват към базата данни едновременно, е 513, горната грешка ще се появи, ако все още няма налична връзка след изчакване на времето, зададено от SqlConnection.ConnectionTimeout (по подразбиране е 15 секунди).
|