Доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен

Ошибка:

Доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен. Включите DTC для доступа к сети в конфигурации безопасности для MSDTC с помощью инструмента администрирования служб компонентов.

using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())   
11                 {   
12                     try  
13                     {   
14                         foreach (DataRow row in this.dt1.Rows)   
15                         {   
16                             int titleId = int.Parse(row["titleId"].ToString());   
17                             string fname = row["fname"].ToString();   
18                             string lname = row["lname"].ToString();   
19   
20                             if (cmd.Parameters.Count > 0)   
21                                 cmd.Parameters.Clear();   
22   
23                             cmd.Parameters.AddWithValue("@titleId", titleId);   
24                             cmd.Parameters.AddWithValue("@fname", fname);   
25                             cmd.Parameters.AddWithValue("@lname", lname);   
26                             cmd.ExecuteNonQuery();   
27   
28                         }   
29                         con.Close();   
30                         ts.Complete();   
31                     }   
32                     catch (Exception ex)   
33                     {   
34   
35                     }                       
36                 }   
37             }  

5 ответов

Чтобы включить сетевой доступ к MSDTC в Windows Vista / 7/8 Server 2008R2 / 2012, выполните следующие действия:

  1. Нажмите кнопку Пуск, выберите пункт Выполнить, введите dcomcnfg, а затем нажмите кнопку ОК, чтобы открыть службы компонентов.

  2. В дереве консоли щелкните, чтобы развернуть Службы компонентов, щелкните, чтобы развернуть Компьютеры, щелкните, чтобы развернуть Мой компьютер, щелкните, чтобы развернуть Координатор распределенных транзакций, а затем щелкните Локальный код неисправности.

  3. Щелкните правой кнопкой мыши Local DTC и выберите Properties, чтобы открыть диалоговое окно Local DTC Properties.

  4. Перейдите на вкладку " Безопасность ".

  5. Флажок "Сетевой доступ к DTC".

  6. Наконец отметьте флажки "Разрешить входящий" и "Разрешить исходящий".

  7. Нажмите Применить, ОК.

  8. Появится сообщение о перезапуске сервиса.

  9. Нажмите ОК и все.

Закройте соединение после завершения транзакции. Метод Complete.

ts.Complete();
con.Close();   

завершенный код

using (System.Transactions.TransactionScope ts = new  Sytem.Transactions.TransactionScope())   
{   
    try  
    {   
        foreach (DataRow row in this.dt1.Rows)   
        {   
            int titleId = int.Parse(row["titleId"].ToString());   
            string fname = row["fname"].ToString();   
            string lname = row["lname"].ToString();   

            if (cmd.Parameters.Count > 0)   
                cmd.Parameters.Clear();   

            cmd.Parameters.AddWithValue("@titleId", titleId);   
            cmd.Parameters.AddWithValue("@fname", fname);   
            cmd.Parameters.AddWithValue("@lname", lname);   
            cmd.ExecuteNonQuery();   
        }   
        ts.Complete(); 
        con.Close();     
    }   
    catch (Exception ex)   
    {   
    }                       
}    

Добавление Enlist=false;в конце строки подключения мне помогло!

Если кто-то смотрит на это и использует linq, просто оберните всю транзакцию в JoinScope следующим образом:

      using js = new JoinScope(false) {
    using (System.Transactions.TransactionScope ts = new Sytem.Transactions.TransactionScope()) { 
        ... 
    }
}

InnerException = {"Доступ к сети для диспетчера распределенных транзакций (MSDTC) отключен. Включите DTC для доступа к сети в конфигурации безопасности для MSDTC с помощью инструмента администрирования служб компонентов."}

Я выполнил описанные ниже шаги, чтобы решить вышеуказанную проблему в моей локальной системе.

Включить сетевой доступ по DTC:

  1. Запустите dcomcnfg при запуске, чтобы открыть инструмент администрирования служб компонентов.

  2. Нажмите на Local DTC и откройте окно свойств

  3. Нажмите на вкладку "Безопасность" и сделайте следующие настройки безопасности, чтобы включить доступ по сети DTC.

    Включенные правила брандмауэра, связанные с координатором распределенных транзакций (TCP-IN/TPC-

Для получения дополнительной информации @ https://rajeevdotnet.blogspot.com/2018/10/wcf-exception-network-access-for.html

Другие вопросы по тегам