Итак, некоторое время назад я написал, как читать другие файлы конфигурации других программ (вот ссылка Предыдущий пост. Мне удалось это сделать. Но теперь другая проблема. Ситуация такая, у меня две программы. Программа A читает свою конфигурацию из конфиг-файла и программа < strong>B используется только для изменения содержимого файла конфигурации, который читает A. Имя файла конфигурации — email.config. Он находится в тот же каталог, в котором находятся программы A и B.
Проблема в том, что я получаю путь к файлу для вложения, используя диалог открытия файла. Если путь указывает на файл в том же каталоге, программа работает отлично! Но если он указывает на файл вне каталога, он генерирует исключение типа System.NullReferenceException.
Вот код
private void saveBtn_Click(object sender, EventArgs e)
{
try
{
// save everything and close
string attachment = attachTxtBox.Text;
var configMap = new ExeConfigurationFileMap { ExeConfigFilename = configFileName };
// it throws exception here when
// the path points to a file outside the exes directory
Configuration externalConfig = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
externalConfig.AppSettings.Settings["ServerAddress"].Value = serverAddr;
externalConfig.AppSettings.Settings["Port"].Value = port;
externalConfig.AppSettings.Settings["SSL"].Value = ssl.ToString();
externalConfig.AppSettings.Settings["Sender"].Value = senderAddr;
externalConfig.AppSettings.Settings["SenderPassword"].Value = password;
externalConfig.AppSettings.Settings["Subject"].Value = subject;
externalConfig.AppSettings.Settings["AttachmentPath"].Value = attachment;
externalConfig.AppSettings.Settings["Body"].Value = messageBody;
// Save values in config
externalConfig.Save(ConfigurationSaveMode.Full);
Application.Exit();
}
catch (System.Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
Application.Exit();
}
}
Содержимое email.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="">
<clear />
<add key="ServerAddress" value="" />
<add key="Port" value="" />
<add key="Sender" value="" />
<add key="SenderPassword" value="" />
<add key="Subject" value="" />
<add key="AttachmentPath" value="" />
<add key="Body" value="" />
</appSettings>
</configuration>
Что я здесь делаю неправильно?
EDIT: значением configFileName является "email.config".