Xo'sh, bir muncha vaqt oldin men boshqa dasturlarning boshqa konfiguratsiya fayllarini qanday o'qishni yozdim (bu erda havola Oldingi xabar. Men buni uddaladim. Ammo endi boshqa muammo bor. Ssenariy shunday, menda ikkita dastur bor. A dasturi konfiguratsiya faylidan va dasturdan o'z konfiguratsiyasini o'qiydi < strong>B faqat A oʻqiydigan konfiguratsiya fayli mazmunini oʻzgartirish uchun ishlatiladi. Konfiguratsiya faylining nomi email.config. A va B dasturlari joylashgan bir xil katalog.
Muammo shundaki, men ochiq fayl dialogidan foydalanib, biriktirish uchun fayl yo'lini olaman. Agar yo'l bir xil katalogdagi faylga ishora qilsa, dastur mukammal ishlaydi! Ammo agar u katalogdan tashqaridagi faylga ishora qilsa, u System.NullReferenceException turidagi istisnoni keltirib chiqaradi.
Mana kod
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 tarkibi:
<?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>
Bu erda men nima noto'g'ri ish qilyapman?
EDIT: configFileName qiymati "email.config"