2013-04-24 7 views
6

In meiner Anwendung, die Verbindung mit MS Sql-Datenbank, verwende ich Microsoft.Data.ConnectionUI Und meine Anwendung funktioniert in meinem Computer. Wenn ich diese Anwendung in einem anderen Computer ausführen, wenn ich Verbindungsdialog öffnen, sehe ich, dass Fehler: enter image description hereFehler beim Entschlüsseln mit dem Provider 'RsaProtectedConfigurationProvider'

, dass mein Code hierfür lautet:

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

Was ich damit tun müssen?

+0

Können Sie uns die Fehlermeldung vom Anbieter übersetzen? –

+0

@RemusRusanu Ja kann ich. "Fehlermeldung vom Anbieter: Ungültige Daten." – EXTRAM

Antwort

10

Fehlerhafte Daten werden normalerweise durch Verwendung eines falschen Schlüssels verursacht. Es klingt, als ob Sie die .config-Datei auf einem Rechner (Ihrem Dev-Rechner?) Verschlüsseln und versuchen, auf einem anderen Rechner zu entschlüsseln. Dies funktioniert nicht, da der Entschlüsselungsschlüssel fehlt.

Der verschlüsselte Konfigurationsabschnitt sollte auf dem Computer verschlüsselt werden, auf dem die Anwendung ausgeführt wird, sodass der entsprechende Schlüssel verwendet wird.

2

Ja, was mir in den Sinn kommt ist, dass Sie encryption in Ihrer Web.Config in den <connectionStrings> Abschnitt aktiviert haben. Diese Art von Problem tritt auf, wenn Sie Ihre Anwendung auf einem Computer bereitstellen, auf dem die Verschlüsselung nicht ausgeführt wurde. Die Verschlüsselung verwendet Schlüssel auf Maschinenebene, die auf Ihrem Entwicklungscomputer fehlen würden. Folgende Möglichkeiten kommen mir in den Sinn

  1. Sie entweder die Verschlüsselung auf der ursprünglichen Maschine & die Anwendung ausführen entfernen
  2. Alternativ können Sie die RSA-Schlüsselcontainer auf der ursprünglichen Maschine während der Verschlüsselung & Import, dass bestimmte Schlüsselcontainer verwendet exportieren Ihre neue Maschine
Verwandte Themen