我将 ASP.NET PasswordRecovery 控件与标准成员资格提供程序结合使用。被锁定的用户收到令人困惑的错误消息
我们无法访问您的信息。请再试一次。
我想更改此消息,但找不到任何方法。属性 XXXFailureText 尤其是 GeneralFailureText 包含多个字符串。似乎有一个隐藏文本用于这种特殊类型的错误,我无法使用属性进行更改。
我将 ASP.NET PasswordRecovery 控件与标准成员资格提供程序结合使用。被锁定的用户收到令人困惑的错误消息
我们无法访问您的信息。请再试一次。
我想更改此消息,但找不到任何方法。属性 XXXFailureText 尤其是 GeneralFailureText 包含多个字符串。似乎有一个隐藏文本用于这种特殊类型的错误,我无法使用属性进行更改。
这也让我很头疼,直到我尝试了这个。我在 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);
}
}
您是否使用自定义会员服务提供商?此错误可能是由部分实现的成员资格提供程序引起的。
您还需要检查您的 web.config 设置。确保设置了这样的东西:
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false"
除了检查他们您的 mailsettings/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
和其他 *Error 事件。http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.passwordrecovery_events.aspx
在控件的属性窗口中,您可以更改显示的文本字段