【问题标题】:asp.net user reset password control question/error!asp.net 用户重置密码控制问题/错误!
【发布时间】:2011-06-18 03:24:32
【问题描述】:

嗨 我正在使用 MS walk through 来教我如何构建一个简单的 ASP.Net 网页 我跟随http://msdn.microsoft.com/en-us/library/ff184050.aspx创建站点并登录。

然后我从http://msdn.microsoft.com/en-us/library/879kf95c.aspx添加了密码重置控件。

我遇到的问题是我创建了一个测试用户,即用户名 = test1 email=test@mydomain.com 和 pw=mytest

我可以登录,我可以更改密码,但是当我使用重置密码时,我收到以下错误:

Server Error in '/Login' Application.
--------------------------------------------------------------------------------

The specified string is not in the form required for an e-mail address. 

这很好,因为用户名不是其 test1 的电子邮件地址!!!为什么要查找电子邮件地址?

如果我输入电子邮件地址,我会收到未找到用户,这再次很好,因为没有用户 test@mydomain.com,因为它的用户 test1 的电子邮件...

我在这里错过了什么?

偷偷摸摸的第二个问题!我可以将创建用户控件设置为要求我批准帐户吗?

完全错误:

“/登录”应用程序中的服务器错误。

指定的字符串不是电子邮件地址所需的格式。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.FormatException:指定的字符串不是电子邮件地址所需的格式。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[FormatException: 指定的字符串不是电子邮件地址所需的格式。] System.Net.Mail.MailAddressParser.ReadCfwsAndThrowIfIncomplete(字符串数据,Int32 索引)+1495521 System.Net.Mail.MailAddressParser.ParseDomain(字符串数据,Int32& 索引)+118 System.Net.Mail.MailAddressParser.ParseAddress(字符串数据,布尔值 expectMultipleAddresses,Int32& 索引)+94 System.Net.Mail.MailAddressParser.ParseAddress(字符串数据)+23 System.Net.Mail.MailAddress..ctor(字符串地址,字符串 displayName,编码 displayNameEncoding)+238 System.Net.Mail.Message..ctor(字符串来自,字符串到)+122 System.Net.Mail.MailMessage..ctor(字符串来自,字符串到)+114 System.Web.UI.WebControls.MailDefinition.CreateMailMessage(字符串收件人,IDictionary 替换,字符串正文,控件所有者)+1396 System.Web.UI.WebControls.LoginUtil.CreateMailMessage(String email, String userName, String password, MailDefinition mailDefinition, String defaultBody, Control owner) +187 System.Web.UI.WebControls.LoginUtil.SendPasswordMail(字符串电子邮件,字符串用户名,字符串密码,MailDefinition mailDefinition,字符串 defaultSubject,字符串 defaultBody,OnSendingMailDelegate onSendingMailDelegate,OnSendMailErrorDelegate onSendMailErrorDelegate,控制所有者)+371 System.Web.UI.WebControls.PasswordRecovery.AttemptSendPasswordUserNameView() +566 System.Web.UI.WebControls.PasswordRecovery.AttemptSendPassword() +62 System.Web.UI.WebControls.PasswordRecovery.OnBubbleEvent(对象源,EventArgs e)+103 System.Web.UI.Control.RaiseBubbleEvent(对象源,EventArgs args)+37 System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +125 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串事件参数)+167 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)+10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

【问题讨论】:

  • 它将需要一个电子邮件地址来发送重置密码,但您提到您将其设置为 test@mydomain.com。您可以从错误行号、调用堆栈中发布更多信息吗?
  • 您是否创建了密码重置页面?你能在重置密码按钮上检查它关联的事件处理程序吗?
  • @Paul,我已经设置了 SMTP 信息,但是这似乎在表单验证上失败了,好像用户名必须是 eamil 地址,如果是这样,用户创建控件不会强制执行此操作,因此我如何拥有用户 test1... 我只是按照上面第二个链接中的步骤将重置控件拖到设置 SMTP 的表单上。
  • @HeloWorld(我喜欢你的用户名!)是的,我已经创建了这个页面。我不确定这些是如何连接起来的,因为它似乎对你有用!我认为必须有一个验证属性我错过了,因为它正在寻找电子邮件而不是用户名,但我不知道它在哪里或它是什么。双击按钮只会将您带到一个空方法...
  • 您是否提供了from 电子邮件地址?

标签: c# asp.net .net-3.5


【解决方案1】:

在您的 MailSettings 中提供有效的电子邮件 from 地址。

这是必不可少的(但也是一个常见的陷阱)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-10
    • 2017-06-02
    • 2020-06-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多