Dictionary 개체의 데이터를 사용자 지정 ExtendedMembershipProvider의 CreateUserAndAccount 메서드로 전달하는 데 문제가 있습니다. 사용자 정보를 채우고 성공적으로 내 사용자 지정 공급자의 CreateUserAndAccount 메소드를 호출MVC 4가 Dictionary를 RouteValueDictionary로 변환합니다.
Dictionary<string, object> userInfo = new Dictionary<string, object>();
userInfo.Add("Email", model.Email);
userInfo.Add("PasswordQuestion", model.PasswordQuestion);
userInfo.Add("PasswordAnswer", model.PasswordAnswer);
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, userInfo, true);
: 내 계정 컨트롤러에서 (포스트) 등록 방법은 다음있다.
두 가지가있을 수 있습니다 - 문제가있을 수 있습니다.
첫째, 메소드 서명이 동일하지 공급자 방법은 다음과 같다 : 부울 및 사전 매개 변수를 전환되지만, 방법은 아직 도달
public override string CreateUserAndAccount(string userName, string password, bool requireConfirmation, IDictionary<string, object> values)
. 나는이 일치하도록 계정/등록 방법의 코드를 변경하면 내가 얻을 :
이WebMatrix.WebData.WebSecurity.CreateUserAndAccount에 가장 적합한 오버로드 된 메서드 (문자열, 문자열, 개체, 부울) '일부를 가지고 잘못된 인수.
어떻게 이런 일이 발생할 수 있는지 혼란 스럽습니다. 제 질문은 근본적으로 무슨 일입니까?
두 번째로 코드가 CreateUserAndAccount에 도달하면 전달 된 Dictionary 개체가 RouteValueDictionary로 변환되고 다른 모든 매개 변수가 예상대로 나타납니다.
어떻게 내 사전 개체를 다시 가져 와서 Email, PasswordQuestion 및 PasswordAnswer 값에 액세스 할 수 있습니까?
감사 리차드, 좋은 대답. TBH 나는 긴 코딩 세션의 끝을 보았다. –