在控制器的操作中使用transactionsope

时间:2013-11-24 16:10:03

标签: asp.net-mvc

我收到“服务器上的MSDTC'ADMIN-PC \ SQLEXPRESS'不可用”以下代码中的错误

客户类:

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

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

SQL Express不直接支持MSDTC。

看看这是否有帮助:

http://alexduggleby.com/2008/08/24/msdtc-unavailable-for-sql-express-transactions-or-who-took-my-msdtc-settings-on-vista/

http://www.learningpenguin.net/myblog/2008/03/12/msdtc-on-server-sqlexpress-is-unavailable/

完全启用MS DTC:

1.在“控制面板”中,打开“管理工具”,然后双击“组件服务”。

2.在“控制台根”的左窗格中,单击“组件服务”,然后展开“计算机”。

3.右键单击“我的电脑”,然后单击“属性”。

4.在MSDTC选项卡上,单击安全配置。

5.在“安全设置”下,选中所有复选框。

6.验证DTC登录帐户名称设置为NT AUTHORITY \ NetworkService