2013-04-24 21 views
6

W mojej aplikacji, łączącej się z bazą danych MS Sql, używam Microsoft.Data.ConnectionUI I moja aplikacja działa na moim komputerze. Jeśli uruchomić tę aplikację w innym komputerze, kiedy okno otwarte połączenie, widzę, że błąd: enter image description hereNie można odszyfrować za pomocą dostawcy "RsaProtectedConfigurationProvider"

to jest mój kod to:

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

Co muszę zrobić z tym?

+0

Czy możesz przetłumaczyć dla nas komunikat o błędzie od dostawcy? –

+0

@RemusRusanu Tak, mogę. "Komunikat o błędzie od dostawcy: Złe dane." – EXTRAM

Odpowiedz

10

Złe dane są zwykle spowodowane użyciem niewłaściwego klucza. Wygląda na to, że szyfrujesz plik .config na jednym komputerze (twój komputer deweloperski?) I próbujesz odszyfrować na innym komputerze. To nie zadziała, ponieważ brakuje klucza odszyfrowywania.

Sekcja szyfrowanej konfiguracji powinna zostać zaszyfrowana na komputerze, na którym działa aplikacja, aby korzystał z odpowiedniego klucza.

2

Tak, przychodzi mi do głowy, że włączyłeś encryption w swoim Web.Config do sekcji <connectionStrings>. Ten typ problemu występuje podczas wdrażania aplikacji na komputerze, na którym nie przeprowadzono szyfrowania. Szyfrowanie wykorzystuje klucz maszynowy, którego nie ma na maszynie programistycznej. Następujące opcje są moim zdaniem

  1. Można też usunąć szyfrowanie na oryginalnej maszynie & uruchomić aplikację
  2. Alternatywnie można wyeksportować klucza pojemnik RSA stosowany na oryginalnej maszynie podczas szyfrowania & import tego konkretnego kontenera klucza na Twoja nowa maszyna
Powiązane problemy