【发布时间】: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电子邮件地址?