Я читаю значения из файла app.config. После внесения некоторых изменений я сохраняю конфигурацию. Проблема в том, что изменения записываются в другой файл.
Значения читаются из GeoBagHostingService.exe.config.
Изменения записываются в GeoBagService.dll.config
Мое решение содержит 2 проекта: GeoBagHostingService и GeoBagService, так что, возможно, именно здесь все и запутано.
Функционально я хочу заменить значение пароля зашифрованным значением. Поэтому, если в конфигурации содержится ключ «пароль», я заменяю его ключом «encryptedPassword», содержащим значение зашифрованного пароля.
Код, который я использую, содержится в классе в проекте de GeoBAGService.
Чтобы прочитать, изменить и сохранить конфигурацию, которую я использую:
// Opening the configuration (GeoBagHostingService.exe.config)
Configuration configuration = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
var oraclePassword = ConfigurationManager.AppSettings["oraclePassword"];
if (!string.IsNullOrWhiteSpace(oraclePassword))
{
string encryptedPassword = EncryptString(oraclePassword, configPassword);
configuration.AppSettings.Settings.Remove("oraclePassword");
configuration.AppSettings.Settings.Remove("encryptedPassword");
configuration.AppSettings.Settings.Add("encryptedPassword", encryptedPassword);
// Writing back the changes (or so I thought)
// encryptedPassword is now in GeoBagService.dll.config
configuration.Save();
}
else
{
oraclePassword = DecryptString(ConfigurationManager.AppSettings["encryptedpassword"], configPassword);
}
Что здесь происходит и как записать изменения в ту же конфигурацию, откуда они читаются?