Проблемът е, че по някаква причина вашият DataReader не се затваря. Изключение? Потребителят на метода не е запомнил да затвори DataReader?
Функция, която връща DataReader за използване извън тялото, оставя отговорността за затварянето му на външен код, така че няма гаранция, че Reader ще бъде затворен. Ако не затворите четеца, не можете да използвате повторно връзката, в която е бил отворен.
Така че връщането на DataReader от функция е много лоша идея!
Можете да видите цяла дискусия по тази тема тук .
Потърсете употребите на тази функция (GetDataReader
) и проверете дали има гаранция, че четецът се затваря. И най-важното е, че няма възможност този код да влезе отново и да използва същата колекция, за да отвори нов DataReader, преди първият да бъде затворен. (Не се подвеждайте от CommandBehavior.CloseConnection. Това се грижи само за затварянето на връзката, когато DataReader е затворен... само ако не пропуснете да го затворите)