我的网站上有一个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));