开发者

Network access for Distributed Transaction Manager (MSDTC) has been disabled

开发者 https://www.devze.com 2023-02-14 04:44 出处:网络
error: Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administ

error:

Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool.

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                           开发者_如何学Go  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             }  


To enable Network access to MSDTC on Windows Vista/7/8 Server 2008R2/2012, follow the steps below:

  1. Click Start, click Run, type dcomcnfg and then click OK to open Component Services.

  2. In the console tree, click to expand Component Services, click to expand Computers, click to expand My Computer, click to expand Distributed Transaction Coordinator and then click Local DTC.

  3. Right click Local DTC and click Properties to display the Local DTC Properties dialog box.

  4. Click the Security tab.

  5. Check mark "Network DTC Access" checkbox.

  6. Finally check mark "Allow Inbound" and "Allow Outbound" checkboxes.

  7. Click Apply, OK.

  8. A message will pop up about restarting the service.

  9. Click OK and That's all.


Close the connection after the transaction scope Complete method.

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

the completed code is

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)   
    {   
    }                       
}    


Adding Enlist=false; at the end of the connection string helped me!


If someone is looking at this, and using linq, then just wrap the whole transaction into a JoinScope like this:

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


InnerException = {"Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool."}

I followed the below steps to resolve above issue on my local system

Enable Network DTC Access :

  1. Run dcomcnfg in start to open the Component Services Administrative tool

  2. Click on Local DTC and open the property window

  3. Click on security Tab and make below security settings to enable Network DTC Access

    Enabled Firewall Rules related to Distributed Transaction Coordinator (TCP-IN/TPC-

For more details @https://rajeevdotnet.blogspot.com/2018/10/wcf-exception-network-access-for.html

0

精彩评论

暂无评论...
验证码 换一张
取 消