【问题标题】:System.Configuration.ConnectionStringSettingsCollection.this[string].get returned nullSystem.Configuration.ConnectionStringSettingsCollection.this[string].get 返回 null
【发布时间】:2019-03-28 14:16:26
【问题描述】:

当我尝试在数据库中插入用户密码时,我正在尝试在 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");
    }
}

【问题讨论】:

  • 你设置断点了吗?您似乎无法从配置文件中获取连接字符串
  • 你能提供你的配置的 sn-p 你在哪里拉这个连接字符串吗?
  • 想通了。谢谢;0
  • 那么问题出在哪里?
  • 对于null异常,应该是key不存在于配置中。

标签: c# mysql asp.net-mvc-4


【解决方案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"。我认为这应该可以解决您的问题。 希望对您有所帮助。

【讨论】:

    【解决方案2】:

    通常,您会尝试使用其名称从Web.Config 读取连接字符串:

    <connectionStrings>
      <add name="StudentConn" connectionString="Database=XXX;Data Source=XXX;Initial Catalog=XXX;Integrated Security=True"/>
    

    获取 Logging 数据库的连接字符串

    public static string Logging { get { return ConfigurationManager.ConnectionStrings["StudentConn"].ConnectionString; } }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 2014-07-14
      • 2011-11-18
      • 2022-12-29
      相关资源
      最近更新 更多