Я использую TransactionScope
, чтобы сделать метод, который содержит несколько транзакций sql транзакций. Теперь я должен назвать второй метод, который также использует ту же самую связь, и я получаю следующее исключение при connection.Open()
:Вызов транзакции и метода, который использует то же соединение
Сетевой доступ к распределенным Transaction Manager (MSDTC) был отключен. Включите DTC для доступа к сети в конфигурации безопасности для MSDTC с помощью инструмента администрирования служб компонентов .
Так что это псевдо-код:
public static void Method1()
{
using (TransactionScope scope = new TransactionScope())
{
bool success = true; // will be set to false in an omitted catch
using (var connection = new SqlConnection(ConnectionString1))
{
// ...
if(somethingHappened)
Method2();
}
if(success)
scope.Complete();
}
}
public static void Method2()
{
using (var connection = new SqlConnection(ConnectionString1))
{
connection.Open(); // BOOOM!
// ...
}
}
Как избежать этого исключения без повторения кода из Method2
в Method1
?
Я получил это тоже, но на разных ConnectionStrings. – Steve
http://stackoverflow.com/questions/7694/how-do-i-enable-msdtc-on-sql-server, проверьте, помогает ли ответ с 64 upvotes – mybirthname
@Steve, эта ошибка при разных типах подключений ожидается поведение – Fabio