Persistenţă în web.config

Se dă o aplicaţie la care trebuie sa faci un kit de instalare. Toate bune şi frumoase până când trebuie să automatizezi setările din web.config, că doar nu o să-l rogi frumos pe webadmin să facă configurările de mână.

Drept urmare, trebuie să faci un CustomInstaller care deschide web.configu, scrie ce e de scris si apoi inchide (nu înainte de a salva).

Ca să se persiste modificările tale trebuie sa ştergi respectiva configurare din instanţa pe care o manipulezi şi să oadaugi din nou cu setările dorite. Astfel, daca ai ceva prin appSettings, se face în felul următor:

AppSettingsSection appsettings;
appsettings = (AppSettingsSection)config.GetSection(“appSettings”);
appsettings.Settings.Clear();
appsettings.Settings.Add(“MailFrom”, mailAddress);
appsettings.Settings.Add(“MailUser”, mailFrom);

… ÅŸi aÅŸa mai departe

Sau dacă ai un ApplicationSettingsGroup mai ciudat, ar fi bine să ştergi fiecare SettingElement şi apoi să-l adaugi corespunzător.

de exemplu:

appsettings = (ApplicationSettingsGroup)config.GetSectionGroup(“applicationSettings”);
ClientSettingsSection css = (ClientSettingsSection)appsettings.Sections[0];
ConfigurationElement[] sett = new ConfigurationElement[css.Settings.Count];
css.Settings.CopyTo(sett, 0);
css.Settings.Clear();
foreach (SettingElement se in sett)
{
string wsLocation = se.Value.ValueXml.InnerText;
wsLocation = wsLocation.Replace(“localhost”, webServicesurl);
XmlNode node = se.Value.ValueXml.ChildNodes[0];
node.Value = wsLocation;
css.Settings.Add(se);
}

… că altfel înnebuneÅŸti două ore căutând permisiuni pe fiÅŸiere, etc.

Leave a Reply

Your email address will not be published. Required fields are marked *

*