2014-02-17 2 views
0

여러보고 후 SO Q/A 나는 다음 않았다CustomeMembershipProvider가 호출되지 않는 이유는 무엇입니까?

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, 
) 

웹 구성이

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

그리고의 Global.asax에서

을 가지고 다음과 같이

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 
    } 
} 

데이터베이스 테이블이 있습니다 Lazyinitialization using

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가 도우미 네임 스페이스에 정말하고 어셈블리 이름 "어셈블리"다음은 WebSecurity.CreateUserAndAccount에 대한 코드는? –

답변

0

SimpleMmebershipProvider에서 잘못된 메서드를 재정의했습니다. CreateUserAndAccount에는 여러 가지 오버로드 된 메서드가 있습니다. source code for WebSecurity을 보면이 기호가 [SimpleMembershipProvider.CreateUserAndAccount Method (String, String, Boolean, IDictionary)] 인 것을 볼 수 있습니다. 당신의 Web.config 같이

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); 
    }