2011-10-06 26 views
7

farklı bir kesiminde bir appSetting'in başvurabilir benim appSettingsAppsettings.Dev.Config denilen ayrı bir yapılandırma dosyasında tanımlanır ve bu yüzdensahip olduğumu nasıl web.config

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

Diyelim gibi benim web.config dosyası içinde bu dosyayı içerir dosyadaki ayarlardan biri

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

başka yerde web.config içine ayar MailerEmailAccount değerini erişebilir miyim nedir? Nasıl?

cevap

4

Hayır, web yapılandırma dosyası "ayarları" kendiliğinden çekemez; hiç de dinamik değil. Tek tür dinamik işlevsellik, diğer .config'i içerme kabiliyetidir, ancak bu, "tüm bu ayarları, sanki onlar benim bir parçammış gibi" emer.

+0

configSource özniteliği. Bu, system.net etiketinin içindeki mailSettings etiketinin (veya system.net etiketinin kendisi için) çalışması gibi görünmüyor. Diğer dosyalardaki appSettings ve connectionStrings öğelerinin yanı sıra ayarları çekmenin bir yolu var mı? – floatingfrisbee

+0

Bunun için kısıtlamalar olup olmadığından emin değilim; Ben çoğunlukla appSettings ve connectionStrings için kullandığım gibi. VS2010 kullanıyorsanız, Web.Config dönüşümlerini de düşünebilirsiniz: http://weblogs.asp.net/srkirkland/archive/2009/10/13/common-web-config-transformations-with-visual-studio -2010.aspx – CodingGorilla

+0

Bu system.net ve mailSettings etiketlerinin farklı bir dosyadan alınamadığı ortaya çıkar. Bununla birlikte, smtp etiketi (mailSettings'in bir alt öğesi) olabilir. Web.config dönüşümlerini kullanıyorum ama bu sorun sadece bu konuyla çözülemedi. Teşekkürler. – floatingfrisbee

4

appSettings değerini çeken bir özel ConfigurationSection oluşturduğunuzda bu mümkün olabilir. İşte

özel yapılandırma bölümünü nasıl oluşturulacağını açıklar bir makale: Bu aradığınız buysa
http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

Bilmiyorum ama ben okumak için aklınıza tek yolu web.config içinden bir web.config ayarı.

DÜZENLEME

Bunu test etmedim ama belki böyle bir şey çalışacak ?: Ben AppSettings'i ve connectionStrings kullanmak için (başka bir dosyadan ayarlarında çekin) bunu

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

Bu hapsedilen bağlantı ve kod pasajı için teşekkürler. Kodun şu anda ihtiyacım olan şey için çalıştığından emin değilim, ancak bu iyi bir fikir. – floatingfrisbee