У меня есть веб-сайт, который обслуживает веб-сервисы (смесь .asmx и WCF), который в основном использует LINQ to SQL и System.Transactions.Иногда мы видим, что транзакция превращается в распределенную транзакцию, которая вызывает проблемы, поскольку наши веб-серверы изолированы от наших баз данных таким образом, что мы не можем использовать MSDTC.
Я настроил трассировку для системы.Транзакции, добавив в свой web.config следующее:
<system.diagnostics>
<sources>
<source name="System.Transactions" switchValue="Information">
<listeners>
<add
name="tx"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="tx.log"
/>
</listeners>
</source>
</sources>
</system.diagnostics>
Это очень интересно и показывает мне, когда транзакция продвигается, но я нахожу, что на самом деле это не помогает понять, почему.
Существует ли эквивалентный механизм трассировки для ADO.NET, который будет показывать мне при создании соединений, включая переменные, которые влияют на пул (пользователь, строка cnn, область транзакции)?