dynamiczna zmiana app.config w webservices

0

Czy istnieje możliwość dynamicznej podmiany parametrów w pliku app.config w projekcie C# korzystającym z webservices. Nie mam żadnego doświadczenia z webservisami, dlatego nie wiem, czy każdy webservice działa tak samo, ale ściągnąłem gotowy projekt i się prawidłowo kompiluje, działa, tylko chciałbym dynamicznie podmieniać w czasie pracy programu (ewentualnie na jego starcie, przekazując odpowiedni parametr) tagi w <appSettings>, w których trzymane są dane wymieniane przez aplikację z webservicem. Np.

<appSettings>
<add key="user" value="janKowalski"/>
</appSettings>

chcę zmienić na janNowak

0

Zrób osobny config dla programu i tam wprowadzaj/czytaj w czasie wykonywania programu. Nie jest dobrą praktyką, aby w aplikacjach internetowych robić zmiany w czasie działania aplikacji bezpośrednio w configu, gdyż (nie wiem jak w przypaku webserviceu w tej kwestii) np. w aplikacjach ASP.NET powoduje to przeładowanie puli aplikacji, więc jej zrestartowanie.

0

Dokładnie, dlatego zapomnij o grzebaniu w app.config lub web.config w czasie działania aplikacji. No chyba, że chcesz to modyfikować za pomocą innej aplikacji.

0

a jak taki osobny config zrobić? W sumie potrzebuję tylko sekcję <appSettings>, reszta związana z konfiguracją połączenia do webservice jest stała.

Rozumiem, że robię nowego configa, np. nowy.config i gdzieś go wpinam? Jakiś include w properties projektu? Czy tak, jak zrobiony jest App.config, tzn. plik config + dodatkowa klasa w katalogu common AppConfig.cs z getterami i setterami wsponianych właściwości (u mnie np. "User")?

Wybaczcie laickie pytania, ale to mój pierwszy kontakt z webservices.

0

Robisz sobie plik o nazwie MojJakisTam.config, który ma wewnętrzną strukturę taką samą jak domyślny .config należący do aplikacji i możesz sobie go otworzyć np. tak:

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

A z tego obiektu możesz sobie już czytać/zapisywać rzeczy, które tam chcesz. U Ciebie pewnie będzie wszystko bez tego 'Web' w typach obiektów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1