我将ASP.NET PasswordRecovery控件与标准成员资格提供程序结合使用。被锁定的用户会收到令人困惑的错误消息
我们无法访问您的信息。请再试一次。
我想改变这条消息,但没办法。属性XXXFailureText特别是GeneralFailureText包含字符串。似乎有一个隐藏的文本用于这种特殊的错误我不能使用属性更改。
答案 0 :(得分:8)
这让我很头疼,直到我试了这个。我向VerifyingUser事件添加了代码以设置UserNameFaileurText,如果用户被锁定并且效果很好,那就是错误消息正是我想要的那样。
protected void PasswordRecovery1_VerifyingUser(object sender, LoginCancelEventArgs e)
{
MembershipUser membershipUser = Membership.GetUser(PasswordRecovery1.UserName);
if (membershipUser != null && membershipUser.IsLockedOut)
{
PasswordRecovery1.UserNameFailureText = string.Format("<span style='font- size:larger'>Your account has been locked. Please contact<br/>your <a href='mailto:webmanager@aaa.co.uk?subject=Locked Account - {0}'>system administrator</a>.</span>", PasswordRecovery1.UserName);
}
}
答案 1 :(得分:2)
您使用的是自定义会员提供商吗?部分实现的成员资格提供程序可能导致此错误。
您还需要检查web.config设置。确保设置了类似的内容:
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false"
除了检查他们的邮件设置/ smtp部分是否已使用“来自”电子邮件地址正确设置。
<mailSettings>
<smtp from="noreply@mysite.com">
<network host="mysite.smtp.server" port="25"/>
</smtp>
</mailSettings>
或在PasswordRecovery
<asp:PasswordRecovery runat="server">
<MailDefinition From="passwordrecovery@mysite.com">
</MailDefinition>
</asp:PasswordRecovery>
顺便说一下,您指定的错误消息是默认的UserNameFailureText
。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery.usernamefailuretext.aspx
如果所有其他方法都失败了,您可以劫持事件并取消它们,然后显示您自己的错误消息。特别是UserLookupError
和其他*错误事件。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery_events.aspx
答案 2 :(得分:0)
在控件的属性窗口中,显示的文本字段可以更改