1

我的站点中有一个 PasswordRecovery 控件。

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

其中一种方法是 GetPassword,以用户名、答案作为参数。

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

据我了解,如果答案不正确,我应该抛出 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)); 
4

0 回答 0