Jak mogę modyfikować / manipulować web.config
programowo za pomocą C #? Czy mogę użyć obiektu konfiguracyjnego, a jeśli tak, w jaki sposób załadować go web.config
do obiektu konfiguracyjnego? Chciałbym mieć pełny przykład zmieniający parametry połączenia. Po modyfikacji plik web.config
powinien zostać zapisany z powrotem na dysk twardy.
c#
web-config
Kottan
źródło
źródło
Odpowiedzi:
Oto kod:
var configuration = WebConfigurationManager.OpenWebConfiguration("~"); var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings"); section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=..."; configuration.Save();
Zobacz więcej przykładów w tym artykule. Być może trzeba będzie przyjrzeć się kwestii podszywania się .
źródło
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection; //section.SectionInformation.UnprotectSection(); section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider"); config.Save();
źródło
Ponieważ plik web.config jest plikiem xml, możesz otworzyć plik web.config za pomocą klasy xmldocument. Pobierz węzeł z tego pliku xml, który chcesz zaktualizować, a następnie zapisz plik xml.
tutaj jest adres URL, który wyjaśnia bardziej szczegółowo, w jaki sposób można programowo zaktualizować plik web.config.
http://patelshailesh.com/index.php/update-web-config-programmatically
Uwaga: jeśli wprowadzisz jakiekolwiek zmiany w pliku web.config, ASP.NET wykryje te zmiany i przeładuje Twoją aplikację (odtworzy pulę aplikacji), a efektem tego będą dane przechowywane w sesjach, aplikacji i pamięci podręcznej (zakładając, że stan sesji jest InProc i nie korzysta z serwera stanu ani bazy danych).
źródło
Jest to metoda, której używam do aktualizacji AppSettings, działa zarówno dla aplikacji internetowych, jak i stacjonarnych. Jeśli chcesz edytować connectionStrings, możesz pobrać tę wartość z,
System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];
a następnie ustawić nową wartość za pomocąconfig.ConnectionString = "your connection string";
. Pamiętaj, że jeśli masz jakieś komentarze wconnectionStrings
sekcji,Web.Config
zostaną one usunięte.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); }
źródło