Изменить web.config программно с помощью C# (.NET)
Как я могу изменить / манипулировать web.config
программно с C#? Могу ли я использовать объект конфигурации, и, если да, как я могу загрузить web.config
в объект конфигурации? Я хотел бы иметь полный пример изменения строки подключения. После модификации web.config
следует записать обратно на жесткий диск.
4 ответа
Вот немного кода:
var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();
Посмотрите другие примеры в этой статье, вам может понадобиться взглянуть на подражание.
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
Поскольку файл web.config является файлом xml, вы можете открыть файл web.config с помощью класса xmldocument. Получите узел из того XML-файла, который вы хотите обновить, и сохраните XML-файл.
Вот URL, который более подробно объясняет, как вы можете программно обновить файл web.config.
http://patelshailesh.com/index.php/update-web-config-programmatically
Примечание. Если вы внесете какие-либо изменения в файл web.config, ASP.NET обнаружит эти изменения и перезагрузит ваше приложение (перезапустит пул приложений), в результате чего данные, хранящиеся в сеансе, приложении и кэше, будут потеряны (при условии состояния сеанса). является InProc и не использует сервер состояний или базы данных).
Это метод, который я использую для обновления AppSettings, работает как для веб-приложений, так и для настольных приложений. Если вам нужно отредактировать connectionStrings, вы можете получить это значение из System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];
а затем установить новое значение с config.ConnectionString = "your connection string";
, Обратите внимание, что если у вас есть какие-либо комментарии в connectionStrings
раздел в Web.Config
они будут удалены.
private void UpdateAppSettings(string key, string value)
{
System.Configuration.Configuration configFile = null;
if (System.Web.HttpContext.Current != null)
{
configFile =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
configFile =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}