ASP PasswordRecovery无法正常工作

时间:2010-06-25 12:45:10

标签: asp.net vb.net password-recovery

我在页面上有一个ASP PasswordRecovery模块,代码如下:

<asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
    <MailDefinition From="[email]">
    </MailDefinition>
</asp:PasswordRecovery>

但是,当我提交表单时,我只是收到消息,“我们无法访问您的信息。请重试。”

我看到了this question,并确保将这些属性添加到我的web.config中:

<providers>
    <remove name="CustomizedMembershipProvider"/>
    <add name="CustomizedMembershipProvider"
        type="System.Web.Security.SqlMembershipProvider"
        connectionStringName="MessageBank"
        applicationName="MessageBank"
        minRequiredPasswordLength="6"
        minRequiredNonalphanumericCharacters="0"
        requiresQuestionAndAnswer="false"
        enablePasswordReset="true"
        enablePasswordRetrieval="false" />
</providers>

电子邮件工作正常,因为该应用程序会在一天内定期发送电子邮件。但由于某种原因,它不会发送恢复电子邮件。

以下是相关的web.config部分:

<mailSettings>
    <smtp from="[email]">
        <network host="[host]" password="[password]" userName="[username]"/>
    </smtp>
</mailSettings>

更新:我添加了一个处理“SendingMail”事件的函数:

Protected Sub PasswordRecovery_submit(ByVal sender As Object, ByVal e As WebControls.MailMessageEventArgs) Handles PasswordRecovery.SendingMail

我在此函数中添加了一个断点,但它永远不会到达,上面的错误消息只是在应用程序中出现。调试出错的任何其他方法?

3 个答案:

答案 0 :(得分:1)

您是否记得在web.config中声明您的smtp部分?默认情况下,密码恢复控件在执行期间使用它。

<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network
defaultCredentials="True"
host="localhost"
port="25"
from="webmaster@mydomain.com"/>
</smtp>
</mailSettings>
</system.net>

答案 1 :(得分:1)

该错误消息是默认的UserNameFailureText

您确定要输入有效的用户名吗?

答案 2 :(得分:1)

以下是我解决问题的方法。正如Brian对答案的评论中所提到的,我们的应用程序正在使用自定义电子邮件功能(不是100%确定为什么,但常规SMTP的东西不起作用)。无论如何,你可以简单地劫持PasswordRecovery.SendingMail事件:

Protected Sub PasswordRecovery_submit(ByVal sender As Object, ByVal e As WebControls.MailMessageEventArgs) Handles PasswordRecovery.SendingMail
    ' do custom email sending here, using the variables in e.Message 

    e.Cancel = False
End Sub