2011-10-06 11 views
7

Mam appSettings zdefiniowane w osobnym pliku konfiguracyjnym o nazwie Appsettings.Dev.Config, i to, że plik w moim pliku web.config jak takJak mogę odwoływać się AppSetting w innej części web.config

<appSettings configSource="ConfigFiles\AppSettings.Dev.config"/> 

Powiedzmy jeden z ustawieniami w pliku jest

<add key="MailerEmailAccount" value="[email protected]" /> 

Czy mogę uzyskać dostęp do wartości zachodzącego MailerEmailAccount gdzie indziej wewnątrz pliku web.config? W jaki sposób?

Odpowiedz

4

Nie, plik konfiguracyjny sieci nie może pobrać "ustawień" z siebie; to wcale nie jest dynamiczne. Jedynym rodzajem dynamicznej funkcjonalności jest możliwość dołączenia innych .config, ale to tylko "wyssać wszystkie te ustawienia, jakby były częścią mnie".

+0

to zrobić (w ustawieniach wyciągnąć z innego pliku) dla AppSettings i connectionStrings uzywajac atrybut configSource. Wydaje się, że nie działa to dla znacznika mailSettings wewnątrz znacznika system.net (lub dla samego znacznika system.net). Czy istnieje sposób, aby pobrać ustawienia oprócz appSettings i connectionStrings z innych plików? – floatingfrisbee

+0

Nie jestem pewien, czy istnieją ograniczenia; tak jak ty używam go głównie dla appSettings i connectionStrings. Jeśli używasz VS2010, możesz także rozważyć transformacje Web.Config: http://weblogs.asp.net/srkirkland/archive/2009/10/13/common-web-config-transformations-with-visual-studio -2010.aspx – CodingGorilla

+0

Wyłącza to, że znaczniki system.net i mailSettings nie mogą pochodzić z innego pliku. Jednak tagiem może być znacznik smtp (który jest podrzędnym ustawieniem mailSettings). Korzystam z transformacji web.config, ale tego konkretnego problemu nie można rozwiązać właśnie przez to. Dzięki. – floatingfrisbee

4

Możliwe, że utworzysz niestandardową ConfigurationSection, która pobiera wartość z appSettings.

Oto artykuł, który wyjaśnia, jak stworzyć sekcję konfiguracji niestandardowych:
http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

ja nie wiem, czy to jest to, czego szukasz, ale jest to jedyny sposób mogę myśleć, aby przeczytać ustawienie web.config z poziomu web.config.

EDIT

nie testowałem, ale może coś jak to będzie działać ?:

[ConfigurationProperty("localName", IsRequired = true, IsKey = true)] 
public string LocalName 
{ 
    get 
    { 
     return this["localName"] as string; 
    } 
    set 
    {     
     this["localName"] = WebConfigurationManager.AppSettings.Get(value); 
    } 
} 
+0

Dziękuję za ten zahakowany link i fragment kodu. Nie jestem pewien, czy kod działa w tym momencie, ale jest to dobry pomysł. – floatingfrisbee

Powiązane problemy