c# - 使用提供程序 'RsaProtectedConfigurationProvider' 解密失败

标签 c# .net sql-server

在我的连接到 MS Sql 数据库的应用程序中,我使用的是 Microsoft.Data.ConnectionUI 我的应用程序在我的电脑上工作。如果我在另一台计算机上运行此应用程序,当我打开连接对话框时,我会看到该错误: enter image description here

这是我的代码:

    try
    {
        connectionString = ShowDialogConnection();

        SqlConnection connect = new SqlConnection(connectionString);
        connect.Open();
        backgroundWorker1.RunWorkerAsync();


    }
    catch (Exception exc)
    {
        MessageBox.Show(exc.ToString());
    }

string ShowDialogConnection()
        {
            string conn = "";
            DataConnectionDialog dlg = new DataConnectionDialog();
            DataSource.AddStandardDataSources(dlg);
            dlg.SelectedDataSource = DataSource.SqlDataSource;
            dlg.SelectedDataProvider = DataProvider.SqlDataProvider;
            if (ConfigurationManager.ConnectionStrings["ConStr"] != null)
            {
                dlg.ConnectionString = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
            }
            if (DataConnectionDialog.Show(dlg) == DialogResult.OK)
            {
                if (dlg.ConnectionString != null && dlg.ConnectionString != "")
                {
                    conn = dlg.ConnectionString;
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                    ConnectionStringsSection csSection = config.ConnectionStrings;
                    csSection.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
                    csSection.SectionInformation.ForceSave = true;
                    ConnectionStringSettings csSettings = new ConnectionStringSettings("ConStr", dlg.ConnectionString, "System.Data.SqlClient");
                    if (csSection.ConnectionStrings["ConStr"] != null)
                        csSection.ConnectionStrings.Remove("ConStr");
                    csSection.ConnectionStrings.Add(csSettings);
                    config.Save(ConfigurationSaveMode.Modified);
                }
            }
            return conn;
        }

我需要用它做什么?

最佳答案

坏数据通常是由于使用了错误的 key 造成的。听起来您正在一台机器(您的开发机器?)上加密 .config 文件,并试图在另一台机器上解密。这将不起作用,因为缺少解密 key 。

加密的配置部分应该在应用程序运行的机器上加密,以便它使用适当的 key 。

关于c# - 使用提供程序 'RsaProtectedConfigurationProvider' 解密失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16187369/

相关文章:

.net - .NET VM 是编译器还是解释器?

c# - 如何为 AES 生成持久 key

带有转换的sql server中的sql

sql - 操作数类型冲突 : uniqueidentifier is incompatible with int

c# - 多个用户对数据库进行更改时刷新本地缓存?

c# - File.ReadAllText 线程安全吗?

C# 可以将 "program"类部分用于控制台应用程序吗?

c# - 封装不是很可笑吗?

c# - 如何从内部取消或终止工作流

sql - 单个 SQL 查询处理 NULL 和非 NULL 值