Hoofdstuk 9 - Les 1

Applicaties halen hun instellingen uit twee bestanden: de centrale machine.config, welke toegankelijk is voor alle .NET applicaties en de applicatie-specifieke .config bestand in de assembly map. De machine.config geldt voor alle soorten applicaties: WPF, console en web applicaties.

Sommige instellingen van de machine.config kunnen worden overschreven in de lokale config file.

De System.Configuration namespace bevat classes voor het lezen en schrijven van configuratie instellingen. Standaard maakt .NET gebruik van de oude namespace. Om de nieuwe namespace te gebruiken moet eerst een reference worden toegevoegd.

Om in code applicatie instellingen te definieren moet er een instantie van ConfigurationManager.OpenExeConfiguration worden gemaakt. Met Configuration.Add kan d.m.v. een name/value pair een setting worden aangemaakt. Met Configuration.Save worden de waarden opgeslagen:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Add("MyKey","MyValue");

config.Save(ConfigurationSaveMode.Modified);


De code genereert een bestand waarin deze waarde is opgeslagen.

Met ConfigurationManager.AppSettings["MyKey"]; kan de waarde weer worden uitgelezen.

Op dezelfde wijze kan ook een connectionstring worden uitgelezen: ConfigurationManager.ConnectionStrings. De return is geen NamevalueCollection zoals bij Appsettings, maar een ConnectionStringSettingsCollection. Het ConnectionStringSettings object kent 3 belangrijke properties:
  1. Name: de naam van de connectionstring. Dit is de key waarmee hij benaderd kan worden
  2. ProviderName: bepaalt het type van de database connectie
  3. ConnectionString: definieert hoe de client verbinding maakt met de server.

Het is vaak niet nodig om de machine.config in te lezen, maar als dat wel moet kan dat door de ConfigurationManager.OpenMachineConfoiguration methode aan te roepen om een instantie aan te maken die het machine.config bestand representeert.

Configuration machineSettings = ConfigurationManager.OpenMachineConfiguration();

ProtectedConfigurationSection pcs = (ProtectedConfigurationSection)machineSettings.GetSection("configProtectedData");

Console.WriteLine(pcs.DefaultProvider);

Console.WriteLine(pcs.Providers["DataProtectionConfigurationProvider"].Parameters["description"]);
Deze code toont de beschrijving van de DataProtectionConfigurationProvider.

Elke configuratie sectie heeft een unieke class.

Er kunnen ook unieke classes gemaakt worden voor elke custom sectie in het machine.config bestand. Dit kan door gebruik te maken van de verouderde IConfigurationSectionHandler te implementeren. De aanbevolen manier is door te erven van de ConfigurationSection class. Indien hiervan gebruik wordt gemaakt moet het .config aangepast worden met een custom waarde als attribuut: <customSettings lastUser="Martijn" lastNumber="25"/>

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren