У меня есть модульный тест для некоторого кода, который иногда выдает «Транзакция уже была явно или явно зафиксирована или прервана».исключение.Google дает мне много замечательных обращений, но ни одно из прочитанных, похоже, не применимо.
Если я запускаю модульный тест локально, исключение не выдается.
Если я запускаю его на сервере сборки вручную,исключение никогда не генерируется.
Фактически, единственное время, когда создается исключение, - это ночью во время процесса автоматической сборки и тестирования, когда исключение генерируется примерно в 80% случаев.
Это исключает практически все результаты Google по данному вопросу, поскольку проблемы, которые обычно возникают из-за проблем с подключением к базе данных в транзакциях или брандмауэрах.
Нет событий ни в одном из журналов событий (в сборкекомпьютер, на котором выполняются тесты или сервер базы данных разработки), что указывает на наличие проблемы.Фактически, единственное сообщение о связанном событии, которое я вижу, находится на компьютере базы данных - «MSDTC: истекло время простоя сеанса, разрывая сеанс».Событие происходит вскоре после запуска теста.
Я не уверен, как продолжить пытаться найти эту проблему.
Есть ли какие-либо способы генерирования деталей из кода в состоянии транзакции (я использую C # с .NET 3.5)?
Есть ли способ, чтобы журнал событий давал мне больше информации, чтобы помочь отследить это?
В число участвующих машин входят Windows 2000 Server (db) и Windows Serer 2003 (build), еслиэто помогает найти правильные инструменты.