2013-07-10 19 views
5

Projektuję projekt aplikacji sieci Web ASP.NET MVC4. W katalogu głównym mojego projektu mam domyślny domyślny plik Web.config wraz z odpowiednimi elementami. W szczególności mam kilka zdefiniowanych elementów appSettings. Jako przykład fragment wykazać to:Uzyskiwanie dostępu do aplikacji z wielu plików Web.config

<appSettings> 
    <add key="foo" value="bar" /> 
</appSettings> 

Naturalnie, można uzyskać dostęp do tego elementu w ramach kodu przy użyciu ConfigurationManager.AppSettings["foo"]. To działa idealnie dla mnie. Jednak wraz z moim projektem tworzę pakiet NuGet. Pakiet instaluje się w swoim własnym katalogu pod katalogiem mojego projektu Areas. Tutaj, w katalogu głównym paczki, mam inny plik Web.config. Jest tak, że gdy inny użytkownik importuje pakiet NuGet, konfiguracja zasobów pakietu jest natywna dla pakietu. Niech pakiet na Web.config zawierać następujące elementy:

<appSettings> 
    <add key="dirEnabled" value="true" /> 
</appSettings> 

Wystarczy, aby wyjaśnić w kategoriach względnych ścieżek, teraz mam dwa pliki web.config, jeden na ./Web.config i jeden na ./Areas/PackageName/Web.config.

W ramach mojego pakietu chcę odzyskać wartość dla dirEnabled. Aby to zrobić, wykonuję połączenie: ConfigurationManager.AppSettings["dirEnabled"]. Powoduje to jednak błąd. Wygląda na to, że pobierany jest tylko zbiór appSettings z ./Web.config, a nie mój plik konfiguracyjny pakietu. Czy można w ogóle pobrać kolekcję appSettings z pliku konfiguracyjnego mojego pakietu, a nie z głównego pliku konfiguracyjnego projektu?

+0

zobaczyć również http://stackoverflow.com/questions/11351106/multiple-appsettings-files-is-it-possible –

Odpowiedz

7

Zdobione! Aby użyć innego pliku konfiguracyjnego, włącz WebConfigurationmanager. Tak więc, aby uzyskać dostęp do AppSettings z ./Areas/PackageName/Web.config, wystarczy użyć:

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName"); 
string dirE = config.AppSettings.Settings["dirEnabled"].Value; 
2

Spróbuj z

<appSettings file="<Path_To_Second_Web.Config>"> 
    ... 
</appSettings > 

w Twój projekt na Web.config

http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx

+0

Dzięki za odpowiedź! Wciąż wyświetla się błąd wskazujący, że nie może on znaleźć wartości. – mattkgross

+0

Będziesz może znaleźć coś tutaj http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx –

Powiązane problemy