Tuesday, 24 January 2012

Modifying Web.Config at run time

Sample code to update an app setting in web.config file at run time. I assume the user have physical path of the web.config, instead of virtual directory.

private static void ChangeAppSettting(string oldValue, string newValue)
{
            string appSettingName = "your app setting name";
            string configFilePath = "Your web.config path";
            Configuration configuration = OpenConfigFile(configFilePath );

            AppSettingsSection appSettings = configuration.AppSettings;

            if (appSettings != null && appSettings.Settings[appSettingName] != null)
            {
                appSettings.Settings[AppSetting].Value = newValue;
                configuration.Save();
            }
        }

        private static Configuration OpenConfigFile(string configPath)
        {
            FileInfo configFile = new FileInfo(configPath);
            VirtualDirectoryMapping virtualDirectoryMapping = new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
            var webConfigFileMap = new WebConfigurationFileMap();
            webConfigFileMap.VirtualDirectories.Add("/", virtualDirectoryMapping);
            return WebConfigurationManager.OpenMappedWebConfiguration(webConfigFileMap, "/");
        }

No comments: