2013-04-20 2 views
5

В моем приложении Windows я пытаюсь зашифровать строку соединения раздел app.config файла, строки соединения часть моего файла app.config являетсяНе удалось расшифровать использование поставщика RsaProtectedConfigurationProvider?

<connectionStrings> 
<add name="SQLiteDB" connectionString="Data Source=|DataDirectory|database.s3db;  
Version=3;password=mypassword;" providerName="System.Data.Sqlite"/> 
</connectionStrings> 

и .cs файл я зашифровать его, как

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); 
ConfigurationSection section = config.GetSection("connectionStrings") as ConnectionStringsSection; // could be any section 

if (!section.IsReadOnly()) 
{ 
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); 
section.SectionInformation.ForceSave = true; 
config.Save(ConfigurationSaveMode.Full); 
} 

После запуска этого кода я получаю зашифрованную строку соединения в другом app.config, этот файл app.config находится в папке bin \ debug, а имя этого файла .config - nameofapplication.exe.config.

Проблема заключается в том, когда я сделал установку этого приложения и запустить на другом компьютере, если дает ошибку, что:

System.Configuration.ConfigurationErrorsException: Failed to decrypt using provider 'RsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened. 

Я делаю это в первый раз, так что не знаю, как решить эту проблему, stucked плохо в Это.

ответ

3

Файл app.config будет зашифрован с использованием сертификата на вашем локальном компьютере. Этот сертификат не будет присутствовать на другом компьютере. Поэтому вы не сможете расшифровать файл app.config.

Для этого вам необходимо экспортировать ключ шифрования на свой компьютер, а затем импортировать его на другой компьютер. В следующей статье показано, как это сделать: Пошаговое руководство: Creating and Exporting an RSA Key Container

+0

FYI, или может быть даже о импортирован ключи к другой машине, в моем случае о разрешении. Когда я отлаживаю VS, не удалось расшифровать, но после того, как я открыл VS как администратор. Начал расшифровать его. – enterbutton

6

С помощью этой команды aspnet_regiis -pa

Open Cmd консоли -execute в Administrator-

C:\Windows\system32>aspnet_regiis -pa "NetFrameworkConfigurationKey" "myDomain\myUser" 
Microsoft (R) ASP.NET RegIIS versión 4.0.30319.33440 
Utilidad de administración que instala y desinstala ASP.NET en el equipo local. 
Copyright (C) Microsoft Corporation. Todos los derechos reservados. 
Agregando ACL para el acceso al contenedor de claves RSA... 
Con éxito 

Больше ссылки:

Ɖiamond ǤeezeƦ answer

The RsaProtectedConfigurationProvider sometimes fails when encrypting an application configuration file

ASP.NET Encryption - aspnet_regiis - Farm

Encrypting and Decrypting Web.config Sections in .NET 4.0

+0

Kiquenet ты спас мой день! После обновления моего ноутбука от Win7 до Win10 я продолжал получать эту ошибку. Все, что мне нужно было сделать, это запустить «aspnet_regiis». Теперь все работает снова как чары! –

Смежные вопросы