2008-11-06 18 views

Odpowiedz

13

This fellow pokazuje przykładowy kod jeśli nadal chcesz to zrobić po tych wszystkich zastrzeżeń:

protected void EditConfigButton(object sender, EventArgs e) 
{ 
    Configuration objConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); 
    AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection("appSettings"); 
    //Edit 
    if (objAppsettings != null) 
    { 
     objAppsettings.Settings["test"].Value = "newvalueFromCode"; 
     objConfig.Save(); 
    } 
} 

jednego ważnego powodu, dla edycji web.config jest go zaszyfrować, co jest, co ten artykuł jest na temat.

+0

Zmień tryb auth na przykład. – AgentFire

1

W zależności od tego, co robisz, metoda jest naprawdę nieco inna w każdej sytuacji. Jednak najbardziej niezawodną metodą jest załadowanie go jako XmlDocument i modyfikowanie go w razie potrzeby za pomocą tej metody, ale MUSISZ zachować ostrożność, aby modyfikować go tylko w wymagany sposób.

3

Możesz użyć WebConfigurationManager do odczytu określonych sekcji konfiguracji. Spowoduje to zwrócenie obiektu ConfigurationSection. Możesz użyć tego do odczytu/modyfikacji elementów ConfigurationElements w sekcji. Po ich zaktualizowaniu możesz zapisać ConfigurationSection i zaktualizuje plik swoimi zmianami.

Używam tego, aby automatycznie szyfrować ustawienia aplikacji i connectionStrings w Application_Start, jeśli nie są jeszcze zaszyfrowane. Tak naprawdę nie zmieniłem żadnych ustawień, ale wydaje się, że powinieneś móc to zrobić.

Zapisanie zaktualizowanego pliku konfiguracyjnego może spowodować odtworzenie aplikacji w zależności od sposobu jej utworzenia.

0

Tak, zgadzam się z Joshem. Próbowałem tego wcześniej i miałem dwa negatywne efekty:

  1. Powolne ładowanie jeśli bieżąca strona po odświeżenie strony ASP.NET, ponieważ jest ładowanie web.config i wszystkich związanych z zasobów
  2. W przypadku zmiany sieci .config wystarczająco wcześnie w cyklu ładowania (np. zdarzenia global.asax) witryna może nigdy nie załadować się lub nie udać w nieprzewidywalny sposób
1

W teorii; można po prostu wygenerować plik konfiguracji sieci programowo i przy pomocy szablonów, aby było to łatwiejsze.

Jednakże, jeśli próbujesz edytować swój web.config z poziomu strony; to jest bardzo zalecane . Przynajmniej; uruchamiasz resetowanie aplikacji za każdym razem, gdy ją aktualizujesz; co byłoby szczególnie złe, jeśli korzystasz z sesji w procesie.

Jak Anders zapytał, co próbujesz zrobić?

+0

Zmień tryb auth na przykład. – AgentFire

0

Zgadzam się z innymi, edycję webconfig jest osiągalne, ale zapukać efekty są po prostu niebezpieczne/ryzyko zaangażowany

Jeśli jej wartość, która jest specyficzna dla zgłoszenia, to powinno być w pliku specyficzny konfiguracyjnym aplikacji

0

Dużo czasu na modyfikację ustawień aplikacji po wdrożeniu, np. Powiedz, kiedy coś jest nie tak, np. przełączanie połączenia z bazą danych w przypadku awarii bieżącego DB. Ponadto czasami chcesz utworzyć własny plik konfiguracyjny oparty na XML, który chcesz o modyfikować programowo.

Spróbuj XML Webpad - http://xmlwebpad.codeplex.com/

Jego ramy wyświetlić edytować pliki XML. Po zintegrowaniu go z aplikacją internetową edytowanie pliku web.config będzie tak proste, jak przeglądanie strony web.config, wprowadzanie wymaganych zmian i naciśnięcie przycisku zapisu (wszystko z poziomu aplikacji).