Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# StartSite密码重置页面修改不顺利_C#_Asp.net Mvc_Email - Fatal编程技术网

C# StartSite密码重置页面修改不顺利

C# StartSite密码重置页面修改不顺利,c#,asp.net-mvc,email,C#,Asp.net Mvc,Email,db startersite中的“电子邮件”栏不用于电子邮件,而是用于“个人号码”(原因最好为左)。我为电子邮件添加了另一个专栏,名为“Courriel”(法语表示电子邮件) 现在的问题是,如果有人输入他的“个人号码”来更改密码,我的网站会尝试向这个号码发送电子邮件,当然失败了(因为它不是有效的电子邮件地址) 我希望密码重置页面验证“个人号码”,并自动向数据库“Courrel”列中的电子邮件地址发送电子邮件 以下是我到目前为止的情况: bool passwordSent = false; var

db startersite中的“电子邮件”栏不用于电子邮件,而是用于“个人号码”(原因最好为左)。我为电子邮件添加了另一个专栏,名为“Courriel”(法语表示电子邮件)

现在的问题是,如果有人输入他的“个人号码”来更改密码,我的网站会尝试向这个号码发送电子邮件,当然失败了(因为它不是有效的电子邮件地址)

我希望密码重置页面验证“个人号码”,并自动向数据库“Courrel”列中的电子邮件地址发送电子邮件

以下是我到目前为止的情况:

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));