6

In my application, that connecting to MS Sql database, I am using Microsoft.Data.ConnectionUI And my application work in my computer. If i run this application in another computer, when i open connection dialog, i see that error: enter image description here

That is my code for this:

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

What I need to do with this?

4

2 回答 2

10

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

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

于 2013-04-24T13:07:45.980 回答
2

是的,我想到的是您已encryption在 Web.Config 中启用该<connectionStrings>部分。当您将应用程序部署在未执行加密的机器上时,会出现此类问题。加密使用开发机器上缺少的机器级密钥。我想到了以下选项

  1. 您可以删除原始机器上的加密并运行应用程序
  2. 或者,您可以在加密期间导出原始机器上使用的 RSA 密钥容器并在新机器上导入该特定密钥容器
于 2013-04-24T13:44:22.230 回答