PasswordRecovery и проблема MembershipPasswordException - PullRequest
1 голос
/ 06 июля 2011

На моем сайте есть элемент управления PasswordRecovery.

У меня есть собственный настроенный класс, реализующий MembershipProvider.

Одним из методов является GetPassword, с именем пользователя, answer в качестве параметров.

активируется, когда пользователь вводит ответ на вопрос, и метод должен проверить, является ли ответ правильным.

как я понимаю, если ответ неправильный, я должен выбросить исключение MembershipPasswordException.

   throw new MembershipPasswordException("MyMessage");

когда я прохожу его в режиме отладки, VS (2005 ...) выдает мне следующее Ошибка выполнения

ЧленствоPasswordException не было обработано кодом пользователя

но на стороне клиента кажется, что все работает по плану, пользователь получает сообщение об ошибке, в котором говорится, что ответ не может быть проверен.

Так почему я получаю эту ошибку? все равно нормально?

что я делаю не так?

спасибо

РЕДАКТИРОВАТЬ, это проблемный код:

                conn = GetConnection();

            command = new SqlCommand("CustomMemProvider_GetPassword", conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("ApplicationID", ApplicationID));
            command.Parameters.Add(new SqlParameter("UserName", username));
            command.Parameters.Add(new SqlParameter("Answer", Encrypt(answer)));
            SqlParameter pPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 256);
            pPassword.Direction = ParameterDirection.Output;
            SqlParameter pStatusMessage = new SqlParameter("@StatusMessage", SqlDbType.NVarChar, 256);
            pStatusMessage.Direction = ParameterDirection.Output;

            command.Parameters.Add(pPassword);
            command.Parameters.Add(pStatusMessage);
            command.ExecuteNonQuery();
            string passToDecrypt = Parse.ObjectToString(pPassword.Value);
            if (passToDecrypt == String.Empty)
                throw new MembershipPasswordException(Parse.ObjectToString(pStatusMessage.Value));
            else
                password = Decrypt(Parse.ObjectToString(passToDecrypt)); 
...