2010-02-05 12 views
5

Wir haben ein etwas komplexes Projekt, das die ursprünglichen Entwickler in mehrere Projekte für Organisationszwecke aufgeteilt haben. Das bedeutet für mich, dass ich eine ASP.Net-Site mit einer web.config-Datei, die alle guten Einstellungen enthält, und ein anderes Projekt, das eine DLL-Datei kompiliert, mit einer eigenen .config-Datei, app.config, habe..Net Konfigurationsdateien Verwirrung

In der DLL wäre es sehr nett, auf alle AppSettings zugreifen zu können, die ich in der Datei web.config des ASP.Net proejct habe.

Ist das möglich? Ist es eine gute Übung? Ich möchte nicht wirklich die gleichen Informationen kopieren und einfügen und sie manuell zwischen den beiden synchron halten (tatsächlich könnten es bis zu 20 sein - es ist ein großes Projekt und jemand hat es auf eine absurde Ebene organisiert) .config-Dateien .

Irgendwelche Vorschläge oder Best Practices?

Antwort

3

Dies ist eigentlich Standardverhalten - ConfigurationManager.AppSettings lesen Sie die aktuellen web.config für alle DLLs.
Manchmal werden .config Dateien für andere Projekte (oder DLLs) erstellt, aber sie werden nicht auf der Site verwendet und sollten in web.config zusammengeführt werden.

+0

Vielen Dank! Ich habe versucht zu testen, aber ich hatte Angst, dass ich eine seltsame Kombination von Umständen bei der Bereitstellung verpassen würde. –

0

System.Web.Configuration.WebConfigurationManager.AppSettings greift auf die web.config aus einer beliebigen Klassenbibliothek. Stellen Sie sicher, dass Sie eine Referenz zu System.Configuration und System.Web zu jeder Bibliothek hinzufügen, die darauf zugreifen muss.

Und um Ihre Frage zu Standard-Praxis zu beantworten, ja ist es üblich, Anwendung Schlüssel/Werte in der web.config zu speichern, um Dinge in ASP.NET Web-Anwendungen und Websites zentralisiert zu halten. Verwenden Sie in Ihrer web.config einfach den Abschnitt <appSettings>, wie Sie es normalerweise in app.settings-Dateien tun würden.

+0

Sie haben Recht, aber warum sollten Sie auf 'System.Web' verweisen? Sie können einfach auf "System.Configuration" verweisen, und alles sollte gut sein, z. eine App-Einstellung über 'ConfigurationManager.AppSettings' erhalten. –

+0

Fair genug. Ich neige dazu, die zusätzliche Funktionalität zu verwenden, die im WebConfigurationManager für Web-Apps zu finden ist. Daher bevorzuge ich sie. Wenn man einfach Namen-Wert-Paare finden muss, ist der ConfigurationManager die bessere Lösung ... –

+0

Gute Diskussion über die beiden Manager und ihre Verwendung: http://stackoverflow.com/questions/698157/whats-the- difference-zwischen-dem-webkonfigurationsmanager-und-konfigurationsma/698163 –