Система.Конфигурация.ConnectionStringSettingsCollection.this[строка].возвращает значение null

#c# #mysql #asp.net-mvc-4

#c# #mysql #asp.net-mvc-4

Вопрос:

Я пытаюсь создать и сохранить пароль как в salt, так и в hash, пока пытаюсь вставить пароль пользователя в базу данных. Когда я нажимаю кнопку регистрации, отображается следующая ошибка.

 System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Configuration.ConnectionStringSettingsCollection.this[string].get returned null.
  

Ниже я добавил свой код страницы регистрации.

 public class GenerateHash
{
    public string CreateSalt(int SaltSize)
    {
        var rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
        byte[] Salt = new byte[SaltSize];
        rng.GetBytes(Salt);
        return Convert.ToBase64String(Salt);
    }

    public string GenarateHash(string UserPassword, string salt)
    {
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(UserPassword   salt);
        byte[] PasswordHash = new System.Security.Cryptography.SHA256Managed().ComputeHash(bytes);

        return Convert.ToBase64String(PasswordHash);
    }

    protected void Regist_Click(object sender, EventArgs e)
    {
        GenerateHash HashAndSalt = new GenerateHash();
        string GetSalt = HashAndSalt.CreateSalt(10);
        string hashString = HashAndSalt.GenarateHash(Password.Text, GetSalt);
        string username = UserName.Text;
        string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        using (MySqlConnection conn = new MySqlConnection(connectionString))
        {
            conn.Open();
            using (MySqlCommand cmd = new MySqlCommand("Insert into [User](UserName, PasswordHashed, Salt) values("   "@UserName, @PasswordHashed, @Salt)", conn))
            {
                cmd.Parameters.AddWithValue("@UserName", username);
                cmd.Parameters.AddWithValue("@PasswordHashed", hashString);
                cmd.Parameters.AddWithValue("@Salt", GetSalt);
                cmd.ExecuteNonQuery();
            }
        }
        Response.Redirect("Login  .aspx");
    }
}
  

Комментарии:

1. Вы установили какие-либо точки останова? Похоже, вам не удается получить строку подключения из вашего конфигурационного файла

2. Можете ли вы предоставить фрагмент вашей конфигурации, где вы извлекаете эту строку подключения?

3. Разобрался. Спасибо;0

4. Итак, в чем была проблема?

5. Для исключения null это должен быть ключ, которого не существует в конфигурации.

Ответ №1:

Проверьте имя строки подключения в вашем файле web.config и посмотрите, совпадает ли оно с ConnectionString в вашем коде.

Например:

 <connectionStrings>
    <add name="connStr" connectionString="SERVER=localhost;DATABASE=saha;UID=root;PASSWORD=abc123;max pool size=50000000; Allow User Variables=True"/>
  </connectionStrings>
  

Итак, в приведенном выше коде измените name="connstr" на name="connectionString" . Я думаю, это должно решить вашу проблему.
Надеюсь, это поможет.