web-dev-qa-db-fra.com

Quelle est la différence entre WebConfigurationManager et ConfigurationManager?

Quelle est la différence entre le WebConfigurationManager et le ConfigurationManager?

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

MIS À JOUR

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 ça? Il semble difficile d'obtenir la chaîne de connexion dont vous avez besoin en utilisant le WebConfigurationManager.

MISE À JOUR ENCORE avec CAVEAT!

Si vous n'avez pas de référence au System.Configuration espace de noms ajouté à votre projet, puis Visual Studio affiche une erreur lorsque vous essayez d'accéder à WebConfigurationManager.ConnectionStrings comme un tableau!

99
John Bubriski

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

Si nous regardions 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);
}
92
XOR

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 des fichiers de configuration applicables aux applications ".exe".

Je vous suggère de jeter un œil à WebConfigurationManager et de voir s'il vous fournit tout ce 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 de manière transparente entre le Web et le bureau.

25
Konstantin Tarkus

Bien que WebConfigurationManager se trouve dans l'assembly System.Web, 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 au système d'assemblage.

4
WDuffy

Vous ne savez pas ce que vous voulez dire sur les chaînes de connexion.

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

Sinon, comme XOR dit, 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.

3
Zhaph - Ben Duguid