2010-06-11 4 views
13

doit être simple, mais tout ce que j'essaie RETURNS NULL:Comment lire la section system.web de web.config

const string key = "system.web"; 

var sectionTry1 = WebConfigurationManager.GetSection(key); 

var sectionTry2 = ConfigurationManager.GetSection(key); 

Je suis sûr que je l'ai fait auparavant. J'utilise MVC si cela fait une différence.

Répondre

23

Était un idiot - system.web n'est pas une section de configuration mais un groupe de configuration. Si je change la clé à une section réelle, les deux méthodes fonctionnent bien. Voici une en utilisant ConfigurationManager:

const string outputCacheSettingsKey = "system.web/caching/outputCacheSettings";   

var outputCacheSettingsSection = ConfigurationManager.GetSection(outputCacheSettingsKey) as OutputCacheSettingsSection; 
+0

Pour l'enregistrement le même travail si vous avez besoin de la section de compilation, sauf que vous l'avez casté à 'CompilationSection' –

5

Je pense que l'accès à system.web est légèrement différent de l'accès à appSettings.

Essayez ceci:

string configPath = "/MyAppRoot"; 

Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath); 

IdentitySection section = (IdentitySection)config.GetSection("system.web/identity"); 

Vous devez jeter la section pertinente de system.web que vous essayez d'accéder à un type particulier.

+0

Tout d'abord, vérifiez si la section 'system.web/identity' *** *** existe? – Kiquenet

4

Cela a fonctionné pour moi:

public Int32 GetmaxRequestLength() 
{ 
    // Set the maximum file size for uploads in bytes. 
    var section = ConfigurationManager.GetSection("system.web/httpRuntime") as HttpRuntimeSection; 
    // return length converted to kbytes or return default value as specified 
    return (Int32) Math.Round((decimal)(section != null ? (double)section.MaxRequestLength * 1024/1000 : 5.120), 2); 
} 
+0

' ConfigurationManager.GetSection' lit *** machine.config *** ou *** web.config ** *? Seulement je veux lire *** web.config *** – Kiquenet