MC, 14:58 sobota, 27.10.2012 r.
Ilustracja do artykułu: .NET & Membership Provider - Poblem:  The password-answer supplied is invalid

.NET & Membership Provider - Poblem: The password-answer supplied is invalid

Ostatnio spotkałem się z problemem dotyczącym tworzenia nowego użytkownika wykorzystując Membership Provider-a w technologii .NET. Mianowicie, pomimo używania przeładowania metody CreateUser() nie wymagającej podania pytania i odpowiedzi potrzebnej do odzyskania hasła, rzucany był wyjątek o braku tychże argumentów.

O co chodzi?

Metoda Membership.CreateUser() posiada kilka przeładowań. Pośród nich znajdują się między innymi takie, które wymagają podania nazwy użytkownika, hasła oraz adresu email. Do innych z kolei trzeba przekazać jeszcze dodatkowe parametry takie jak np. pytanie i odpowiedź przydatną podczas procesu odzyskiwania hasła. Kierowany naiwnością, pomyślałem że już samo wywołanie wersji metody bez tych argumentów wystarczy, by stworzyć użytkownika opierając się jedynie na jego nazwie, haśle i adresie pocztowym:
Membership.CreateUser("NazwaUzytkownika", "Haslo", "Adres@Ema.il");
Niestety taka próba zakończyła się rzuceniem wyjątku o wiadomości: The password-answer supplied is invalid.

Gdzie leży przyczyna problemu?

Okazuje się, że przyczyna leżała w braku zrozumieniu działania Membership Providera. Otóż sam fakt, że wybieramy przeładowanie pomijające odpowiedź i pytanie do konta użytkownika, nie wystarczy jeśli nie określiliśmy w sposób jawny w konfiguracji Membership Providera, że pytanie i odpowiedź nie jest wymagana do stworzenia nowego konta. Zatem, aby wywołanie metody CreateUser() z poprzedniego paragrafu mogło zadziałać poprawnie, w Web.config-u aplikacji, w sekcji ustawień Membershipa musi znaleźć się wpis:
requiresQuestionAndAnswer="false"

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: