Asp.net mvc 在控制器的操作中使用TransactionScope
以下代码中出现“服务器上的MSDTC'ADMIN-PC\SQLEXPRESS'不可用”错误 客户类别:Asp.net mvc 在控制器的操作中使用TransactionScope,asp.net-mvc,Asp.net Mvc,以下代码中出现“服务器上的MSDTC'ADMIN-PC\SQLEXPRESS'不可用”错误 客户类别: public class Customer { public int Id; public string CustomerName; public string CustomerID; } 控制器导致所述错误的动作: public ActionResult CreateCustomerLogins() { List&l
public class Customer
{
public int Id;
public string CustomerName;
public string CustomerID;
}
控制器导致所述错误的动作:
public ActionResult CreateCustomerLogins()
{
List<Customer> customer = new List<Customer>;
customers = c.GetCustomerList(); // returns List<Customer>
try
{
using (TransactionScope scope = new TransactionScope())
{
foreach (Customer item in customers)
{
WebSecurity.CreateUserAndAccount(item.CustomerName, item.CustomerID);
}
scope.Complete();
}
}
catch (TransactionAbortedException tae)
{
ModelState.AddModelError("Error", "Error generating customer logins.");
}
return Json(new { });
}
public ActionResult CreateCustomerLogins()
{
列表客户=新列表;
customers=c.GetCustomerList();//返回列表
尝试
{
使用(TransactionScope范围=新TransactionScope())
{
foreach(客户中的客户项目)
{
WebSecurity.CreateUserAndAccount(item.CustomerName,item.CustomerID);
}
scope.Complete();
}
}
捕获(TransactionBortedException tae)
{
AddModelError(“错误”,“生成客户登录名时出错”);
}
返回Json(新{});
}
我的代码怎么了 SQL Express不直接支持MSDTC 看看这是否有帮助: 要完全启用MS DTC,请执行以下操作: 1.在“控制面板”中,打开“管理工具”,然后双击“组件服务” 2.在控制台根目录的左窗格中,单击组件服务,然后展开计算机 3.右键单击“我的电脑”,然后单击“属性” 4.在MSDTC选项卡上,单击安全配置 5.在安全设置下,选中所有复选框
6.验证DTC登录帐户名是否设置为NT AUTHORITY\NetworkService谢谢。这就成功了。你认为我使用TransactionScope的方式有效吗?如果其中的代码失败,是否会回滚是的,代码是正确的。如果事务失败,您需要执行回滚,因此不要调用complete。所以你的代码在这里看起来很好。更多信息和您的参考资料,请参阅此页。。。。