已禁用分布式事务管理器(MSDTC)的网络访问

时间:2011-03-01 01:32:50

标签: asp.net system.transactions

错误:

已禁用分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具在MSDTC的安全配置中启用DTC以进行网络访问。

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             }  

3 个答案:

答案 0 :(得分:36)

要在 Windows Vista / 7/8 Server 2008R2 / 2012 上启用 MSDTC 的网络访问权限,请按照以下步骤操作:

  1. 点击开始,点击运行,输入 dcomcnfg ,然后点击确定以打开组件服务

  2. 在控制台树中,单击以展开组件服务,单击以展开计算机,单击以展开我的电脑,单击展开分布式事务处理协调器,然后单击本地DTC

  3. 右键单击本地DTC ,然后点击属性以显示本地DTC属性对话框。

  4. 点击安全标签。

  5. 选中"网络DTC访问" 复选框。

  6. 最后选中"允许入站" "允许出站" 复选框。

  7. 点击应用确定

  8. 会弹出一条关于重新启动服务的消息。

  9. 点击确定以及全部。

答案 1 :(得分:1)

在事务范围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)   
    {   
    }                       
}    

答案 2 :(得分:-1)

InnerException = {“分布式事务管理器(MSDTC)的网络访问已被禁用。请使用组件服务管理工具在MSDTC的安全配置中为网络访问启用DTC。”}

我按照以下步骤在本地系统上解决了上述问题

启用网络DTC访问:

  1. 在开始时运行dcomcnfg以打开“组件服务管理”工具

  2. 单击本地DTC并打开属性窗口

  3. 单击“安全性”选项卡,然后进行以下安全设置以启用“网络DTC访问”

    与分布式事务处理协调器(TCP-IN / TPC-

  4. 有关的已启用防火墙规则

有关更多详细信息,{@ https://rajeevdotnet.blogspot.com/2018/10/wcf-exception-network-access-for.html