При изучении TransactionScope выяснилось, что если в процессе обработки транзакции начинается еще одна транзакция в том же процессе (но например в соседнем потоке), то создается распределенная транзакция и дальше, учитывая что страниц будет открываться сразу и много – получается совершенная каша с фиксацией в непонятный момент времени. Кроме того чтобы это заработало нужно сначала помудрить с правилами разрешения и настройками сервера.
Самое плохое, что сначала всё хорошо, проблемы начинаются через несколько минут работы сайта, потому сразу не понятно помогло найденное лекарство или нет.
На данный момент пришел к выводу, что оно того не стоит – проще в начале страницы транзакцию запускать и в конце завершать без всяких оберток вручную.
2 комментария на «“TransactionScope и ASP.NET”»
Мне кажется, Вы не совсем правы. TransactionScope скорее завязан на коннекшен к базе, а не на поток. Поэтому если в каждом потоке использовать свой коннекшен (что по идее более правильно), то таких проблем возникать не должно.
Когда на эту особенность наткнулся Каждый TransactionScope создавался для собственный connection – была сделана aspx-страница, которая в начале работы открывала соединение, по завершении – делала коммит транзакции. Или что-то похожее.
Проблема начала проявляться при обработке нескольких запросов одновременно.