2013-04-24 103 views
6

在我的应用程序,连接到MS Sql数据库,我使用Microsoft.Data.ConnectionUI 而我的应用程序在我的电脑工作。如果我在运行另一台计算机此应用中,当我打开连接对话框,我看到这个错误: enter image description here无法解密使用提供商'RsaProtectedConfigurationProvider'

这是我此代码:

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

您能否为我们提供来自提供商的错误消息? – 2013-04-24 09:02:37

+0

@RemusRusanu是的,我可以。 “来自提供者的错误消息:错误的数据。” – EXTRAM 2013-04-24 12:27:54

回答

10

错误的数据通常是由于使用了错误的键造成的。这听起来像是你正在加密一台机器上的.config文件(你的开发机器?)并尝试在另一台机器上解密。由于解密密钥丢失,这不起作用。

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

2

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

  1. 你可以删除原机&加密加密过程中运行应用程序
  2. 另外,您可以导出原始的计算机上使用的RSA密钥容器&进口,在一个特定密钥容器您的新机器
相关问题