используя (SqlDataReader reader = cmd.ExecuteReader ()) ошибка asp. net mvc5 - PullRequest
1 голос
/ 18 июня 2020

Я получаю эту ошибку, даже если проверил, и у меня есть этот параметр в моей базе данных:

Параметризованный запрос '(@UserName nvarchar (4000)) SELECT Email AS Email FROM AspNetUsers' ожидает параметр '@UserName', который не был предоставлен.

Это в моем AccountController:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> SendConfirmationMail() // resend confirmation link in case the users haven't received it 
{
    string res = null;
    string connection = GetConnectionString("DefaultConnection");
    using (SqlConnection myConnection = new SqlConnection(connection))

    {
        myConnection.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "SELECT Email AS Email FROM AspNetUsers WHERE UserName = @UserName";
        cmd.Connection = myConnection;
        cmd.Parameters.AddWithValue("@UserName", EConfUser);

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            if (reader.HasRows)
            {
                if (reader.Read())
                {
                    res = reader["Email"].ToString(); // get user's email from db
                    var user = await UserManager.FindByEmailAsync(res); // find applicationuser user by email
                                                                        //update user's email link date
                    UpdateEmailLinkDate(EConfUser);
                    // generate email conf token and send it
                    codeType = "EmailConfirmation";
                    await SendEmail("ConfirmEmail", "Account", user, res, "WelcomeEmail", "Confirm your account");
                }
                myConnection.Close();
            }
        }
    }
    return RedirectToAction("ConfirmationEmailSent", "Account");
}

Буду благодарен за любую помощь.

1 Ответ

0 голосов
/ 18 июня 2020

Попробуйте следующее:

cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = EConfUser ?? 
(object)DBNull.Value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...