2013-04-24 101 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密鑰容器&進口,在一個特定密鑰容器您的新機器
相關問題