問題。在註冊方案中,我試圖在用戶表中插入一個用戶,然後爲該用戶調用WebSercurity.CreateAccount
(在一個事務中)。這會導致MS DTC在服務器上不可用的錯誤。使用具有在TrasactionScope其他查詢WebSercurity.CreateAccount,而不DTC啓用
Description。我這樣做的原因是因爲我有一個Customer
實體,它繼承自User
,所以WebSercurity.CreateUserAndAccount
不能使用,因爲它不知道約Customer
,只是插入User
記錄。
我使用Asp.net MVC 4的EntityFramework 5,CodeFirst,和SQL Server 2008 R2。
任何建議不使用DTC將不勝感激!
編輯。 這是顯而易見的,爲什麼這個錯誤發生,因爲websecurity使用它自己的數據庫連接,我的倉庫使用其他連接,雖然我已經配置simplemembership使用相同DbContext
類作爲我的資料庫,但問題是它創建了一個在DbContext
的新實例...
我希望如果有通過現有上下文對象,或連接到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, model.Password, true);
await Task.Run(() => EmailHelper.SendConfrimationEmail(token, model.Email));
// tx.Complete();
//}
謝謝,是的,我知道,是不是有辦法通過連接到'WebSecurity'方法? 你有什麼建議會員供應商? – Ashkan 2013-02-22 01:19:54