87

Was ist der Unterschied zwischen dem WebConfigurationManager und dem ConfigurationManager?Was ist der Unterschied zwischen dem WebConfigurationManager und dem ConfigurationManager?

Wann sollte ich eins über das andere verwenden?

AKTUALISIERT

Ich sah sie nur an der WebConfigurationManager, und aus irgendeinem Grund, können Sie nicht die Verbindungszeichenfolgen zugreifen, wie Sie im Konfigurationsmanager (wie ein Array) tun. Kann mir jemand sagen, warum MS das so gemacht hat? Es scheint ein Problem zu sein, die benötigte Verbindungszeichenfolge mit dem WebConfigurationManager zu erhalten.

MIT CAVEAT WIEDER AKTUALISIERT!

Wenn Sie keinen Verweis auf den Namespace "System.Configuration" haben, der Ihrem Projekt hinzugefügt wurde, zeigt Visual Studio einen Fehler an, wenn Sie versuchen, auf die WebConfigurationManager.ConnectionStrings wie ein Array zuzugreifen!

+1

Ich glaube nicht, dass‚Vorbehalt‘sehr genau. Ich verwende system.web.configuration für Verbindungszeichenfolgen, ohne system.configuration zu benötigen – sclarson

Antwort

83

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

Wenn wir WebConfigurationManager mit Reflektor looke würde dann Dinge sind klar:

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

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

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

Der 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, sich WebConfigurationManager anzuschauen und zu sehen, ob es Ihnen alles bietet, was Sie mit ConfigurationManager einfach nicht tun können und stattdessen verwenden, ansonsten macht es die Verwendung von ConfigurationManager wesentlich einfacher, Ihren Code nahtlos zwischen Web und Desktop-Aps.

3

nicht sicher, was Sie über die Verbindungszeichenfolgen bedeuten.

Der Aufruf WebConfigurationManager.ConnectionStrings gibt eine System.Configuration.ConnectionStringSettingsCollection zurück, die dieselbe ist, die Sie erhalten würden, wenn Sie ConfigurationManager.ConnectionStrings aufgerufen hätten.

Ansonsten, wie XOR sagt, ist es entworfen, um mehrere hierarchische web.configs zu behandeln, kombiniert sie wie erforderlich, wie Sie die Ordner in einer Anwendung verschieben.

4

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

Wenn Sie immer den Fehler

nicht Indizierung bewerben mit [], um einen Ausdruck des Typs ‚System.Configuration.ConnectionStringSettingsCollection‘

beim Versuch, den Array-Index für den Zugriff auf ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString 

stellen Sie sicher, einen Verweis auf Montage System.Configuration haben

Verwandte Themen