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!
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);
}
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.
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.
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.