在我的应用程序中,连接到MS Sql数据库,我正在使用Microsoft.Data.ConnectionUI
我的应用程序在我的计算机上工作。如果我在另一台计算机上运行此应用程序,当我打开连接对话框时,我看到该错误:
这是我的代码:
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;
}
我需要做什么?
答案 0 :(得分:10)
错误数据通常是由使用错误的密钥引起的。听起来你正在加密一台机器(你的开发机器上的.config文件?)并试图在另一台机器上解密。这不起作用,因为缺少解密密钥。
应在运行应用程序的计算机上加密加密的配置部分,以便它使用相应的密钥。
答案 1 :(得分:2)
是的,我想到的是您已在Web.Config中启用encryption
到<connectionStrings>
部分。在未执行加密的计算机上部署应用程序时,会出现此类问题。加密使用开发机器上缺少的机器级密钥。我想到了以下选项