错误:
已禁用分布式事务管理器(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 }
答案 0 :(得分:36)
要在 Windows Vista / 7/8 Server 2008R2 / 2012 上启用 MSDTC 的网络访问权限,请按照以下步骤操作:
点击开始,点击运行,输入 dcomcnfg ,然后点击确定以打开组件服务。
在控制台树中,单击以展开组件服务,单击以展开计算机,单击以展开我的电脑,单击展开分布式事务处理协调器,然后单击本地DTC 。
右键单击本地DTC ,然后点击属性以显示本地DTC属性对话框。
点击安全标签。
选中"网络DTC访问" 复选框。
最后选中"允许入站" 和"允许出站" 复选框。
点击应用,确定。
会弹出一条关于重新启动服务的消息。
点击确定以及全部。
答案 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访问:
在开始时运行dcomcnfg以打开“组件服务管理”工具
单击本地DTC并打开属性窗口
单击“安全性”选项卡,然后进行以下安全设置以启用“网络DTC访问”
与分布式事务处理协调器(TCP-IN / TPC-
有关更多详细信息,{@ https://rajeevdotnet.blogspot.com/2018/10/wcf-exception-network-access-for.html