asp.net-mvc-4 – 在TrasactionScope中使用WebSercurity.CreateA
发布时间:2020-12-16 03:22:35 所属栏目:asp.Net 来源:网络整理
导读:问题.在注册方案中,我尝试在User表中插入用户,然后为该用户调用WebSercurity.CreateAccount(在事务中).这会导致MS DTC在服务器上不可用的错误. 描述.我之所以这样做,是因为我有一个继承自User的Customer Entity,因此无法使用WebSercurity.CreateUserAndAccou
问题.在注册方案中,我尝试在User表中插入用户,然后为该用户调用WebSercurity.CreateAccount(在事务中).这会导致MS DTC在服务器上不可用的错误.
描述.我之所以这样做,是因为我有一个继承自User的Customer Entity,因此无法使用WebSercurity.CreateUserAndAccount,因为它不了解Customer而只是插入User记录. 我正在使用带有EntityFramework 5,CodeFirst和SQL Server 2008 R2的Asp.net MVC 4. 任何不使用DTC的建议将不胜感激! 编辑. 我希望有一种方法可以传递现有的上下文对象,或者连接到WebSecurity以与其方法一起使用. 这是代码: if (ModelState.IsValid) { //using (TransactionScope tx = new TransactionScope()) //{ UnitOfWork.UserRepository.Insert(new Customer { FirstName = model.FirstName,LastName = model.LastName,Email = model.Email,Tel = model.Tel,Mobile = model.Mobile,BirthDate = model.BirthDate,InsertDate = DateTime.Now,UserType = UserType.Customer,MaritalStatus = model.MaritalStatus,ZipCode = model.ZipCode,StreetAddress = model.StreetAddress,City = model.City,State = model.State }); UnitOfWork.Commit(); string token = WebSecurity.CreateAccount(model.Email,model.Password,true); Roles.AddUserToRole(model.Email,"Customer"); //WebSecurity.Login(model.Email,true); await Task.Run(() => EmailHelper.SendConfrimationEmail(token,model.Email)); // tx.Complete(); //} 解决方法
发生DTC错误是因为您尝试跨两个不同的数据库连接跨越事务.你有几个选择.
SimpleMembership专为简单场景而设计.您正在进行高级方案,因此您应该使用不同的成员资格提供程序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 强类型视图与动态类型视图
- asp.net – ninject如何在高级别工作,它如何拦截对象实例化
- ASP.NET MVC6:以编程方式设置webroot
- asp.net-mvc – ASP.NET MVC – 如何访问除Controller和Vie
- 防止ASP.Net中的重复回发(C#)
- asp.net-mvc-3 – 基于角色的模型列表授权
- asp.net-mvc – 可以浏览DataAnnotations的自定义Html帮助器
- asp.net-mvc – 使用RedirectToAction单元测试ASP.NET MVC
- asp.net core 核心对象解析
- asp.net-mvc – 如何使用ASP.NET身份(OWIN)访问Facebook的私
推荐文章
站长推荐
热点阅读