Was ist der Unterschied zwischen dem WebConfigurationManager und dem ConfigurationManager?

102

Was ist der Unterschied zwischen dem WebConfigurationManagerund dem ConfigurationManager?

Wann sollte ich eins über das andere verwenden?

AKTUALISIERT

Ich habe mir nur die angesehen WebConfigurationManager, und aus irgendeinem Grund können Sie nicht ConfigurationManagerwie in einem Array auf die Verbindungszeichenfolgen zugreifen, wie Sie es in der tun . Kann mir jemand sagen, warum MS es so gemacht hat? Es scheint mühsam zu sein, die Verbindungszeichenfolge zu erhalten, die Sie mit dem benötigen WebConfigurationManager.

WIEDER AKTUALISIERT mit CAVEAT!

Wenn Sie keinen Verweis auf den System.ConfigurationIhrem Projekt hinzugefügten Namespace haben, zeigt Visual Studio einen Fehler an, wenn Sie versuchen, auf ein WebConfigurationManager.ConnectionStringsähnliches Array zuzugreifen !

John Bubriski
quelle
1
Ich denke nicht, dass "Vorbehalt" sehr genau ist. Ich benutze system.web.configuration für Verbindungszeichenfolgen, ohne system.configuration zu benötigen
sclarson

Antworten:

94

WebConfigurationManger weiß, wie mit der Konfigurationsvererbung in einer Webanwendung umgegangen wird. Wie Sie wissen, kann eine Anwendung mehrere web.config-Dateien enthalten - eine im Stammverzeichnis der Site und eine beliebige Anzahl in Unterverzeichnissen. Sie können den Pfad an die GetSection () -Methode übergeben, um eine mögliche überschriebene Konfiguration zu erhalten.

Wenn wir uns WebConfigurationManager mit Reflector ansehen würden, wären die Dinge klar:

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

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

WebConfigurationManager wurde speziell für ASP.NET-Anwendungen entwickelt.

WebConfigurationManager bietet zusätzliche Methoden zum Laden von Konfigurationsdateien für Webanwendungen.

ConfigurationManager bietet auch Methoden zum Laden von Konfigurationsdateien für ".exe" -Anwendungen.

Ich würde vorschlagen, einen Blick auf WebConfigurationManager zu werfen und zu prüfen, ob es Ihnen etwas bietet, was Sie mit ConfigurationManager einfach nicht tun können, und es stattdessen zu verwenden. Andernfalls wird die Verwendung von ConfigurationManager die nahtlose Verwendung Ihres Codes zwischen Web- und Desktop-Aps erheblich vereinfachen.

Konstantin Tarkus
quelle
4

Obwohl sich WebConfigurationManager in der System.Web-Assembly befindet, befindet sich die zurückgegebene ConnectionStringSettingsCollection in System.Configuration.

Wenn Sie den Fehler erhalten

Die Indizierung mit [] kann nicht auf einen Ausdruck vom Typ 'System.Configuration.ConnectionStringSettingsCollection' angewendet werden.

beim Versuch, auf den Array-Index zuzugreifen ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

Stellen Sie sicher, dass Sie einen Verweis auf Assembly System.Configuration haben

WDuffy
quelle
3

Ich bin mir nicht sicher, was du mit den Verbindungszeichenfolgen meinst.

Wenn Sie WebConfigurationManager.ConnectionStrings aufrufen, wird eine System.Configuration.ConnectionStringSettingsCollection zurückgegeben, die mit dem Aufruf von ConfigurationManager.ConnectionStrings identisch ist .

Andernfalls kann XOR, wie XOR sagt, mehrere hierarchische web.configs verarbeiten und diese nach Bedarf kombinieren, wenn Sie sich in den Ordnern einer Anwendung bewegen.

Zhaph - Ben Duguid
quelle