Изменить web.config программно с помощью C # (.NET) - PullRequest
89 голосов
/ 14 февраля 2010

Как я могу изменить / манипулировать web.config программно с C #? Могу ли я использовать объект конфигурации и, если да, как я могу загрузить web.config в объект конфигурации? Я хотел бы иметь полный пример изменения строки подключения. После изменения web.config следует записать обратно на жесткий диск.

Ответы [ 4 ]

113 голосов
/ 14 февраля 2010

Вот код:

var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();

См. Больше примеров в этой статье . Возможно, вам придется взглянуть на олицетворение .

12 голосов
/ 14 февраля 2010
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
5 голосов
/ 17 февраля 2010

Поскольку файл web.config является файлом xml, вы можете открыть файл web.config с помощью класса xmldocument. Получите узел из того XML-файла, который вы хотите обновить, и сохраните XML-файл.

Вот URL-адрес, который более подробно объясняет, как вы можете программно обновить файл web.config.

http://patelshailesh.com/index.php/update-web-config-programmatically

Примечание. Если вы внесете какие-либо изменения в файл web.config, ASP.NET обнаружит эти изменения и перезагрузит ваше приложение (перезапустить пул приложений), в результате чего данные, хранящиеся в Session, Application и Cache, будут потеряны при условии, что состояние сеанса - InProc, а не используется сервер состояний или база данных).

2 голосов
/ 14 июля 2018

Это метод, который я использую для обновления 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...