Quelle est la différence entre WebConfigurationManager et ConfigurationManager?

102

Quelle est la différence entre le WebConfigurationManageret le ConfigurationManager?

Quand devrais-je utiliser l'un sur l'autre?

ACTUALISÉ

Je viens de regarder le WebConfigurationManager, et pour une raison quelconque, vous ne pouvez pas accéder aux chaînes de connexion comme vous le faites dans le ConfigurationManager(comme un tableau). Quelqu'un peut-il me dire pourquoi MS a fait comme ça? Il semble difficile d'obtenir la chaîne de connexion dont vous avez besoin en utilisant le WebConfigurationManager.

MISE À JOUR AVEC CAVEAT!

Si vous n'avez pas de référence à l' System.Configurationespace de noms ajouté à votre projet, Visual Studio affichera une erreur lorsque vous essayez d'accéder au WebConfigurationManager.ConnectionStringstableau comme un tableau!

John Bubriski
la source
1
Je ne pense pas que la «mise en garde» soit très précise. J'utilise system.web.configuration pour les chaînes de connexion sans avoir besoin de system.configuration
sclarson

Réponses:

95

WebConfigurationManger sait comment gérer l'héritage de configuration au sein d'une application Web. Comme vous le savez, il peut y avoir plusieurs fichiers web.config dans une seule application - un à la racine du site et un nombre quelconque dans les sous-répertoires. Vous pouvez passer le chemin à la méthode GetSection () pour obtenir une configuration éventuellement remplacée.

Si nous regardons WebConfigurationManager avec Reflector, les choses sont claires:

public static object GetSection(string sectionName)
{
    ...
    return ConfigurationManager.GetSection(sectionName);
}

public static object GetSection(string sectionName, string path)
{
    ...
    return HttpConfigurationSystem.GetSection(sectionName, path);
}
XOR
la source
25

WebConfigurationManager est spécialement conçu pour les applications ASP.NET.

WebConfigurationManager fournit des méthodes supplémentaires pour charger les fichiers de configuration applicables aux applications Web.

ConfigurationManager fournit également des méthodes pour charger les fichiers de configuration applicables aux applications ".exe".

Je suggérerais de jeter un coup d'œil à WebConfigurationManager et de voir s'il vous fournit quelque chose que vous ne pouvez tout simplement pas faire avec ConfigurationManager et de l'utiliser à la place, sinon l'utilisation de ConfigurationManager facilitera l'utilisation de votre code entre les applications Web et de bureau.

Konstantin Tarkus
la source
4

Bien que WebConfigurationManager se trouve dans l'assembly System.Web, le ConnectionStringSettingsCollection qu'il renvoie se trouve dans System.Configuration.

Si vous obtenez l'erreur

Impossible d'appliquer l'indexation avec [] à une expression de type «System.Configuration.ConnectionStringSettingsCollection»

en essayant d'accéder à l'index du tableau ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

assurez-vous d'avoir une référence à l'assembly System.

WDuffy
la source
3

Je ne sais pas ce que vous voulez dire à propos des chaînes de connexion.

L'appel de WebConfigurationManager.ConnectionStrings renvoie un System.Configuration.ConnectionStringSettingsCollection, qui est le même que vous obtiendriez si vous appeliez ConfigurationManager.ConnectionStrings .

Sinon, comme le dit XOR, il est conçu pour gérer plusieurs web.configs hiérarchiques, en les combinant selon les besoins lorsque vous vous déplacez dans les dossiers d'une application.

Zhaph - Ben Duguid
la source