2013-03-11 6 views
0

Я сам создал простые таблицы членства, чтобы у меня была возможность обновить поле имени пользователя (не могу сделать это, если вы просто разрешите автозагрузку его для вас).MemberhipCreateUserException: имя пользователя уже используется

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

Когда я запускаю эту строку кода, я продолжаю получать сообщение об ошибке, что имя пользователя уже существует. Странно то, что в таблице с тем же именем нет имени пользователя, и это делается для каждой регистрации. Это как-то связано с тем, что я сам создаю таблицы, но я не вижу, где у него такая проблема.

Он добавляет его в мою таблицу UserProfile (называемую UserSecurity), но не включает пользователя в таблицу членства.

Редактировать: Строка выше содержит таблицу webpages_Membership. Мне нужно, чтобы вместо этого использовалась моя таблица UserMembership.

+1

Не могли бы вы опубликовать полный код? Может быть, глупый вопрос, но вы подтвердили, что ваша модель заполняется, и .UserName не является пустой строкой (или нулевой)? –

+0

Я только что узнал, что строка, которую я показал в своем коде, использует webpages_Membership, а не мою собственную таблицу Membership. Как заставить его использовать мою таблицу членства? – zms6445

+0

Имя пользователя не является нулевым, а модель заполняется – zms6445

ответ

0

Редактировать: Строка выше содержит таблицу webpages_Membership. Мне нужно, чтобы вместо этого использовалась моя таблица UserMembership.

Если вы хотите, чтобы Simple Memberhip Provider использовал другую таблицу, чем по умолчанию, вам нужно изменить таблицу, на которую указывает WebSecurity.InitializeDatabaseConnection.

В обозревателе решений перейдите в меню Фильтры ->InitializeSimpleMembershipAttribute.cs и использовать вместо этого:

WebSecurity.InitializeDatabaseConnection("MyContext", "TableToPointTo", 
"UserIdColumn", "UserNameColumn", autoCreateTables: true); 
+0

У меня было это. Однако у меня были autoCreateTables: false. Теперь он использует мою UserSecurity вместо таблицы UserProfile. Но он по-прежнему продолжает использовать другие таблицы для ролей и членства. – zms6445

+0

Итак, вы хотите, чтобы ваша таблица UserSecurity хранила все связанные с учетной записью данные, роли и т. Д.? – MattSull

+0

Нет, мне сказали, что мне нужно создать таблицы simplemembership вручную, чтобы я мог разрешить пользователям изменять свое имя пользователя в таблице UserProfile. Прочитайте мой другой вопрос, который приведет меня к этому http://stackoverflow.com/questions/15342352/how-to-change-username-using-mvc4-and-simplemembership – zms6445

Смежные вопросы