PasswordRecovery和MembershipPasswordException问题

时间:2011-07-06 12:02:19

标签: c# asp.net asp.net-membership membership-provider password-recovery

我的网站上有一个PasswordRecovery控件。

我有自己的自定义类实现MembershipProvider。

其中一种方法是GetPassword,使用用户名,answer作为参数。

当用户输入问题的答案时,它会被激活,该方法应检查答案是否正确。

据我了解,如果答案不正确,我应该抛出MembershipPasswordException。

   throw new MembershipPasswordException("MyMessage");

当我在调试模式下执行它时,VS(2005 ...)给了我以下运行时错误

MembershipPasswordException未被用户代码

处理

但在客户端,似乎一切都按照计划运行,用户收到一条错误消息,说明无法验证答案。

那么为什么我会收到此错误?反正好吗?

我做错了什么?

感谢

编辑,这是有问题的代码:

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

0 个答案:

没有答案