C# StartSite密码重置页面修改不顺利
db startersite中的“电子邮件”栏不用于电子邮件,而是用于“个人号码”(原因最好为左)。我为电子邮件添加了另一个专栏,名为“Courriel”(法语表示电子邮件) 现在的问题是,如果有人输入他的“个人号码”来更改密码,我的网站会尝试向这个号码发送电子邮件,当然失败了(因为它不是有效的电子邮件地址) 我希望密码重置页面验证“个人号码”,并自动向数据库“Courrel”列中的电子邮件地址发送电子邮件 以下是我到目前为止的情况:C# StartSite密码重置页面修改不顺利,c#,asp.net-mvc,email,C#,Asp.net Mvc,Email,db startersite中的“电子邮件”栏不用于电子邮件,而是用于“个人号码”(原因最好为左)。我为电子邮件添加了另一个专栏,名为“Courriel”(法语表示电子邮件) 现在的问题是,如果有人输入他的“个人号码”来更改密码,我的网站会尝试向这个号码发送电子邮件,当然失败了(因为它不是有效的电子邮件地址) 我希望密码重置页面验证“个人号码”,并自动向数据库“Courrel”列中的电子邮件地址发送电子邮件 以下是我到目前为止的情况: bool passwordSent = false; var
bool passwordSent = false;
var resetToken = "";
var email = Request.Form["email"] ?? Request.QueryString["email"];
Validation.RequireField("email", "Le champ numéro est obligatoire.");
if (IsPost) {
AntiForgery.Validate();
bool isValid = true;
if (Validation.IsValid()) {
if (WebSecurity.GetUserId(email) > -1 && WebSecurity.IsConfirmed(email)) {
resetToken = WebSecurity.GeneratePasswordResetToken(email); // Indiquez une date d'expiration pour le jeton (facultatif)
} else {
passwordSent = true;
isValid = false;
}
}
if (isValid) {
var hostUrl = Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
var resetUrl = "http://xx.xx.xx.xx" + VirtualPathUtility.ToAbsolute("~/Account/PasswordReset?resetToken=" + HttpUtility.UrlEncode(resetToken));
var db = Database.Open("StarterSite");
var sqlquery = "SELECT Courriel FROM UserProfile WHERE email = @0";
var mail = db.Query(sqlquery,WebSecurity.GetUserId(email));
WebMail.Send(
to: mail,
subject: "Réinitialisation de votre mot de passe",
body: "Utilisez ce jeton pour réinitialiser votre mot de passe : " + resetToken + @". Accédez à la page <a href=""" + HttpUtility.HtmlAttributeEncode(resetUrl) + @""">" + resetUrl + "</a> pour réinitialiser votre mot de passe."
);
passwordSent = true;
}
}
我收到这个错误
描述:在执行过程中发生未处理的异常
当前的web请求。请查看堆栈跟踪以了解更多信息
有关错误的信息及其在代码中的来源
异常详细信息:System.InvalidOperationException:收件人必须
必须具体说明
如果有人能给我一个快速的提示,那就太好了。是的,我今天早上醒来时有了一个想法。。。我没有引用email=@0,而是将它引用到UserId=@0,然后我将QueryValue更改为Websecurity.GetUserId=D,它可以工作
var db = Database.Open("StarterSite");
var sqlquery = "SELECT Courriel FROM UserProfile WHERE UserId = @0";
Courriel = db.QueryValue(sqlquery,WebSecurity.GetUserId(email));
对于
var mail=db.Query(sqlquery,WebSecurity.GetUserId(email)),您不做任何验证代码>实际上返回任何内容。我怀疑它是空的,因此出现了异常。您是否调试并验证了查询是否按预期工作?
var db = Database.Open("StarterSite");
var sqlquery = "SELECT Courriel FROM UserProfile WHERE UserId = @0";
Courriel = db.QueryValue(sqlquery,WebSecurity.GetUserId(email));