2014-02-17 6 views
0

После просмотра нескольких SO д/а я следующее:Почему CustomeMembershipProvider не вызвано?

public class CustomMembershipProvider : SimpleMembershipProvider 
{ 

    public override string CreateUserAndAccount(string userName, string password, IDictionary<string, object> values) 
    { 
    // code to insert data into UserAccounts and UserProfiles tables 
    // using simple sqlconnections 
    } 
} 

таблицы базы данных являются следующие:

CREATE TABLE UserAccounts 
(
UserNumericId INT NOT NULL IDENTITY PRIMARY KEY, 
LoginName VARCHAR(10) NOT NULL, 
Password VARCHAR(100) NOT NULL, 
) 
CREATE TABLE UserProfiles 
(
UserNumericId INT NOT NULL PRIMARY KEY, 
DisplayName VARCHAR(100) NOT NULL, 
PrimaryEmail VARCHAR(80) NOT NULL UNIQUE, 
) 

Web Config имеет

<membership defaultProvider="CustomMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="CustomMembershipProvider" type="Helpers.CustomMembershipProvider, assembly" /> 
    </providers> 
</membership> 

И в global.asax Lazyinitialzation с использованием

public class SimpleMembershipInitializer 
{ 
    public SimpleMembershipInitializer() 
    { 
     if (!WebSecurity.Initialized) 
      WebSecurity.InitializeDatabaseConnection("ApplicationServices", "UserAccounts", "UserAccountId", "LoginName", autoCreateTables: false); 
    } 
} 

Тем не менее, когда я звоню из моего действия Регистрация контроллера следующее заявление

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { DisplayName= model.DisplayName, PrimaryEmail = model.PrimaryEmail}); 

точку останова в моем настраиваемого поставщика не получить удар. Может кто-нибудь, пожалуйста, помогите мне?

+0

Ваш CustomMembershpProvider действительно в пространстве имен Помощники и сборка название «сборка», как показано в вашем web.config? –

ответ

0

Вы изменили неверный метод в SimpleMmebershipProvider. Существует несколько перегруженных методов для CreateUserAndAccount. Если вы посмотрите на source code for WebSecurity, вы увидите, что он называет тот, у кого есть подпись [SimpleMembershipProvider.CreateUserAndAccount Method (String, String, Boolean, IDictionary)]. Вот код для WebSecurity.CreateUserAndAccount:

public static string CreateUserAndAccount(string userName, string password, object propertyValues = null, bool requireConfirmationToken = false) 
    { 
     ExtendedMembershipProvider provider = VerifyProvider(); 
     Debug.Assert(provider != null); // VerifyProvider checks this 

     IDictionary<string, object> values = null; 
     if (propertyValues != null) 
     { 
      values = new RouteValueDictionary(propertyValues); 
     } 

     return provider.CreateUserAndAccount(userName, password, requireConfirmationToken, values); 
    } 

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

  • Нет связанных вопросов^_^