Хотя это не альтернативный ответ, я хотел бы остановиться на этом, поскольку я только что столкнулся с этой проблемой в своем собственном приложении.
У меня есть приложение ASP.Net, использующее инфраструктуру .Net 4.0, и я вижу,тот же callstack и исключение, по крайней мере, из SqlConnection.Open () и далее.Исключение занимает какое-то время, обычно для его запуска достаточно более 20 пользователей, обращающихся к приложению.Тем не менее, основная причина исключения потенциально отличается от OP.
Я обнаружил, что исключение генерируется, поскольку рабочий поток, обрабатывающий запрос ASP.Net, содержит внешнюю транзакцию, которая ссылается натранзакция, которая ранее была прервана и очищается потоком финализатора.По сути, код, который создал транзакцию, не распорядился ею, поэтому дело за Финализатором - очистить ресурсы.Проблема в том, что внешняя транзакция для рабочего потока не очищается, пока Finalzer не выполнит свою задачу.Это означает, что будущие запросы, выполняющиеся в потоке до завершения финализатора, будут зачислены в эту уже прерванную транзакцию (автоматическое зачисление должно быть включено, если вы не зачислились специально).
Основной причиной этой проблемы был кошмар, который нужно отслеживатьМы надеемся, что если кто-то решит ту же проблему, он не потратит больше недели на то, чтобы заработать себе на старом добром WinDbg, как я только что сделал:)