Oshtri Deka Ответов: 3

Ошибка при сохранении конфигурационного файла


- Привет!

Я пытаюсь сохранить конфигурационный файл MappedExe в каталоге AppData пользователя.
Проблема возникает, когда я пытаюсь сохранить зашифрованную строку подключения.

Это сообщение исключения :
"System.Configuration.ConfigurationErrorsException: An error occured executing section handler for connectionStrings.-->System.Configuration.ConfigurationErrorsException: Failed to encrypt the section 'connectionStrings' using provider 'RsaProtectedConfigurationProvider'. Error message from provider: Object already exists.


Это происходит только с обычными пользователями в домене, у меня нет проблем с администраторами, опытными пользователями,рабочими группами и т. д.

Это часть кода, ответственная за сохранение конфигурационных данных:

if (_configuration.ConnectionStrings.ConnectionStrings[Application.ProductName] == null)
{
    _configuration.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(Application.ProductName, 
                                                                                        _connStringBuilder.ToString()));
}
else
{
    _configuration.ConnectionStrings.ConnectionStrings[Application.ProductName].ConnectionString = _connStringBuilder.ToString();
}
try
{
    if (!_configuration.ConnectionStrings.SectionInformation.IsProtected)
    {
        _configuration.ConnectionStrings.SectionInformation.ForceSave = true;
        _configuration.ConnectionStrings.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
    }

    _configuration.Save(ConfigurationSaveMode.Minimal);
}
catch (Exception ex)
{
#if DEBUG
    MessageBox.Show(ex.ToString() + "\n" + ex.StackTrace);
#else
    throw;
#endif
}



Вы не могли бы мне помочь?

P.S. Это решение ClickOnce.

3 Ответов

Рейтинг:
2

tekprosolutions

Вам нужно запустить команду от имени администратора ;)


Richard Deeming

Этот вопрос был задан, на него ответили и почти решили. ПЯТЬ ЛЕТ НАЗАД.

Рейтинг:
12

Oshtri Deka

Источником всей проблемы является тот факт, что права пользователя домена ограничены для такого рода защиты ("заглядывание" внутрь windir), поэтому мне пришлось повозиться с этой проблемой.
Я создал собственные методы шифрования и дешифрования, и они прекрасно работают.

Приношу свои извинения за задержку ответа.


Рейтинг:
0

#realJSOP

Фактическое шифрование основано либо на ключе RSA, либо на DPAPI, что означает, что ключ хранится на локальном компьютере. Расшифровка может быть выполнена только на той машине, на которой была зашифрована конфигурация приложения (если только вы не экспортируете ключ RSA и не импортируете его на другую машину).


Oshtri Deka

Это RSA, и все делается локально.