2013-03-11 52 views
0

爲什麼您不能更改簡單會員資格用戶名。我試過如何使用mvc4和簡單會員資格更改用戶名

MembershipUser memUser = Membership.GetUser(existingUser); 
memUser.UserName = model.UserName; 
Membership.UpdateUser(memUser); 

我得到的是MembershipUser.UserName是隻讀的。沒有其他可用的方法來更改用戶名。

有沒有辦法解決這個問題?

編輯:新問題。 當行

var confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, Request["Password"], new { NameFirst = model.NameFirst, NameLast = model.NameLast, ContactId = newContact.ContactId },true); 

運行時,我得到一個MembershipCreateUserException並說用戶名已經被使用(它實際上不是)。它管理將用戶添加到我的UserSecurity表(UserProfile),但不會將其添加到成員資格表。 它試圖在webpages_Membership表中添加用戶,而不是我創建的UserMembership表。

+0

我投這個被重新打開,因爲這個問題是'SimpleMembership'的背景下,而不是僅僅'Membership'。 – 2013-09-17 20:15:13

回答

1

您可能無法使用MembershipProvider編輯用戶名稱。 在SimpleMembership中,您必須將UserProfile表添加到存儲用戶名的模型中。

您指定的初始化表:

WebSecurity.InitializeDatabaseConnection("DBname", "UserProfileTable", "IdColumn", "UsernameColumn", autoCreateTables: true); 
+0

我想你也可以使用它,在你自己的地方創建SimpleMembership的表格,然後使用帶有autoCreateTables的初始化程序:false - 但是你必須使用相同的表格,因爲simpleMembership提供者會自動創建 – kapsi 2013-03-11 15:46:52

+0

所以只需創建UserProfile表足夠了,還是我必須重新創建所有簡單成員表?我不確定是否需要對存儲密碼的表進行散列操作,從而爲其做任何不同的操作。 – zms6445 2013-03-11 15:48:10

+0

查看這些文章: http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4- 5-web-forms-and-asp-net-mvc-4-templates.aspx http://blog.osbornm.com/2010/07/21/using-simplemembership-with-asp.net-webpages/ – kapsi 2013-03-11 15:48:21

相關問題